2016-07-07 85 views
0

我正在构建一个TODO列表应用程序。我可以保存字符串并显示它们,但下面给出的脚本也会在单击添加按钮时保存空字符串。避免在Android应用程序数据库中保存空字符串

.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

来测试一个字符串是否是空的:

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线程转移到后台线程。

相关问题