避免在Android应用程序中保存数据库中的空字符串

时间:2016-07-07 20:04:56

标签: android string android-sqlite

我正在构建一个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)

2 个答案:

答案 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)