我已经写了下面的代码来验证字符串中的值,然后再将其保存到数据库中。

EditText editText2 = (EditText) this.findViewById(R.id.editText1);
           setTime = editText2.getText().toString();

           Log.d(setTime, "This is the setTime value");

           if(setTime == null)
           {
               Toast.makeText(Settings.this, "Time cannot be NULL", Toast.LENGTH_LONG).show();
           }

           else if(setTime != null)
           {
               cv.put(DatabaseHelper.TIME, setTime);
               db.insert("finalP", DatabaseHelper.TIME, cv);
               db.close();

               editText2.setText("");

               Toast.makeText(Settings.this, "Time saved", Toast.LENGTH_LONG).show();
           }


但是,即使“ setTime”包含空值,也会跳过“ if”部分,并且控件直接进入“ else”部分,并将空值保存在数据库中。

这不是验证的正确方法吗?

最佳答案

我认为您的字符串为空而不是null。因此,还要在if子句中添加对字符串长度的检查。

EditText editText2 = (EditText) this.findViewById(R.id.editText1);
setTime = editText2.getText().toString();

Log.d(setTime, "This is the setTime value");

if(setTime == null || setTime.length() == 0) {
   Toast.makeText(Settings.this, "Time cannot be NULL", Toast.LENGTH_LONG).show();
} else {
   cv.put(DatabaseHelper.TIME, setTime);
   db.insert("finalP", DatabaseHelper.TIME, cv);
   db.close();

   editText2.setText("");

   Toast.makeText(Settings.this, "Time saved", Toast.LENGTH_LONG).show();
}

关于android - 代码无法验证空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5954992/

10-13 09:24