所以我写的表格有两个字段,一个正文和一个标题。如果这些字段不包含任何数据以防止用户将其保存到数据库,我希望获取表单以抛出一个Toast消息。代码应该做三件事之一。第一个是我想要在上面完成的事情。第二个是如果ID intent为null,它将创建一个新条目,如果ID intent具有内容,它将使用新内容更新数据库条目。我遇到的问题是当表单字段为空时,它仍然保存。它似乎完全跳过我的第一个IF声明,我似乎无法弄清楚为什么。我已尝试将null和“”同时用于第一个IF语句,分别和一起使用。救命?
submitBtn.setOnClickListener(new OnClickListener(){
public void onClick(View v) {
String titleInsert = titleEdit.getText().toString();
String bodyInsert = bodyEdit.getText().toString();
String dateTimeValue = dateTimeTextView.getText().toString();
if ((titleInsert == null || titleInsert == "") || (bodyInsert == null || bodyInsert == "")){
Context context = getApplicationContext();
CharSequence text = "Please make sure the Title and Body are both filled before saving";
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}else if(intentRowId == null){
try{
mDb.open();
mDb.createNote(Integer.parseInt(mIntentId), titleInsert, bodyInsert, dateTimeValue);
finish();
} catch (Exception e) {
e.printStackTrace();
}
} else {
try{
mDb.open();
mDb.updateNote(longRowId, titleInsert, bodyInsert);
finish();
} catch (Exception e){
e.printStackTrace();
Context context = getApplicationContext();
CharSequence text = "SQL Exception Thrown: " + e;
int duration = Toast.LENGTH_SHORT;
Toast toast = Toast.makeText(context, text, duration);
toast.show();
}
}
}
});
答案 0 :(得分:0)
尝试titleInsert.equals("")
等
此外,如果它不为空,您可能需要调用titleInsert = titleInsert.trim();
,以便捕获" "
之类的空白字符串。
编辑:如果您可以使用Apache commons lang,则可以使用具有StringUtils
方法的类isBlank()
,如果字符串为null,为空或仅包含空格,则返回true。
EDIT2:
对titleInsert.equals("")
的简短解释:==
通常会检查相同的对象,而不是数据等式。因此titleInsert
和""
不一定是同一个对象,但可能相同(空字符串)。请注意,在处理(非空)对象时,几乎在所有情况下都应使用equals
,除非您明确知道需要==
(除了检查obj == null
之外这种情况很少见)
简短示例:new Long(1) == 1L
可能会产生错误,因为new Long(1)
会创建一个与Long对象不同的对象,该对象用于文字1L
(另请注意,我确实排除了自动(un)拳击使用1 L )。另一方面,new Long(1).equals(1L)
将产生真实。
答案 1 :(得分:0)
尝试:
titleInsert.equals("")
或
"".equals(titleInsert)
而不是
titleInsert == ""