2016-07-07 8 views
0

私はTODOリストアプリを構築しています。私は文字列を保存して表示することができますが、以下のスクリプトはAddボタンをクリックすると空の文字列も保存します。空の文字列をアンドロイドアプリにデータベースに保存しないでください

.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スレッドでDBを閉じます。長い操作をUIスレッドからバックグラウンドスレッドに迂回させる必要があります。

関連する問題