我正在构建一个TODO列表应用。我可以保存字符串并显示它们,但是当单击“添加”按钮时,下面给出的脚本也会保存空字符串。
.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String task = String.valueOf(taskEditText.getText());
SQLiteDatabase db = mHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(TaskContract.TaskEntry.COL_TASK_TITLE, task);
db.insertWithOnConflict(TaskContract.TaskEntry.TABLE,
null,
values,
SQLiteDatabase.CONFLICT_REPLACE);
updateUI();
db.close();
}
})
.setNegativeButton("Cancel", null)
答案 0 :(得分:0)
测试字符串是否为空:
String someString;
//...
if(someString != null && !someString.isEmpty()) {
//do what you want with the valid string
}
代码中的将如下所示:
.setPositiveButton("Add", new DialogInterface.OnClickListener() {
@Override
public void onClick(DialogInterface dialog, int which) {
String task = String.valueOf(taskEditText.getText());
if(task != null && !task.isEmpty()) {
SQLiteDatabase db = mHelper.getWritableDatabase();
ContentValues values = new ContentValues();
values.put(TaskContract.TaskEntry.COL_TASK_TITLE, task);
db.insertWithOnConflict(TaskContract.TaskEntry.TABLE,
null,
values,
SQLiteDatabase.CONFLICT_REPLACE);
updateUI();
db.close();
} else {
//should notify user that cannot enter empty task
}
}
})
.setNegativeButton("Cancel", null)
此外,您不应该在UI线程上执行打开,操作和关闭数据库等长时间操作。应该将长操作从UI线程转移到后台线程。
答案 1 :(得分:0)
您应该限制UI,只要文本框为空,该按钮就会被禁用。
要检查文本是否为空,请使用实用程序方法,例如https://developer.android.com/reference/android/text/TextUtils.html#isEmpty(java.lang.CharSequence)