2017-06-07 60 views
0

我正在爲學生設計的應用程序。在這個應用程序中,我有一個包含使用SQLite存儲的學生任務的列表視圖。我在操作欄上放置了2個菜單按鈕,用於返回並從列表中刪除任務。當我點擊後退按鈕時它工作正常,但是當我嘗試從列表視圖中刪除任務時,它首先詢問用戶是否想要使用AlertDialog.Builder刪除任務,然後成功地將消息烘烤但不刪除任務名單。使用ActionBar菜單按鈕從ListView中刪除任務Android

我的操作欄菜單按鈕代碼如下所示。請幫我糾正我的代碼,我真的很感激它。

預先感謝您!

switch (item.getItemId()) { 
      case R.id.action_back: 
       Intent openMainActivity = new Intent(this, MainActivity.class); 
       startActivity(openMainActivity); 
       return true; 

      case R.id.action_discard: 
       AlertDialog.Builder builder = new AlertDialog.Builder(Second.this); 
       builder 
         .setTitle(getString(R.string.delete_title)) 
         .setMessage(getString(R.string.delete_message)) 
         .setIcon(android.R.drawable.ic_dialog_alert) 
         .setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() { 
          public void onClick(DialogInterface dialog, int which) { 
           int id = getIntent().getExtras().getInt(getString(R.string.rodID)); 
           db.delete(DbHelper.TABLE_NAME, DbHelper.ID + "=" + id, null); 
           Toast.makeText(Second.this,"Task deleted",Toast.LENGTH_SHORT).show(); 
           db.close(); 
           Intent openMainActivity = new Intent(Second.this, MainActivity.class); 
           startActivity(openMainActivity); 
          } 
         }) 
         .setNegativeButton(getString(R.string.no), null) 
         .show(); 
         return true; 

      default: 
       return super.onOptionsItemSelected(item); 
     } 
+0

你得到的錯誤是什麼?增加問題的更多細節。 – Adithya

+0

我認爲你的ID與數據庫ID不匹配。打印您的行ID並檢查它是否正確。 – MKY

+0

@Adithya我沒有收到任何錯誤,您的應用程序工作正常。發生的唯一問題是,我試圖從列表視圖中刪除任何任務後,它不刪除。 Toast消息顯示該任務被刪除,但該任務仍然保留在列表視圖中。 – SoonProgrammerToBe

回答

0

我認爲你的ID與數據庫ID不匹配。打印您的行ID並檢查它是否正確。

從數據庫中刪除數據後,您需要再次查詢,並通知數據已改變其他關閉應用程序適配器並重新打開才能看到效果。

0

請DbHelper類中添加此功能

public void deleteRow(String value) { 
    SQLiteDatabase db = this.getWritableDatabase(); 
    db.execSQL("DELETE FROM " + TABLE_NAME + " WHERE " + ID + "='" + value + "'"); 
    db.close(); 
} 

而且在OnClick方法調用這個函數

.setPositiveButton(getString(R.string.yes), new DialogInterface.OnClickListener() { 
         public void onClick(DialogInterface dialog, int which) { 
          int id = getIntent().getExtras().getInt(getString(R.string.rodID)); 
          dbHelper.deleteRow(id); 
          Toast.makeText(Second.this,"Task deleted",Toast.LENGTH_SHORT).show(); 
          db.close(); 
          Intent openMainActivity = new Intent(Second.this, MainActivity.class); 
          startActivity(openMainActivity); 
         } 
        }) 

//只是

db.delete(DbHelper.TABLE_NAME, DbHelper.ID + "=" + id, null); 

更換,以

dbHelper.deleteRow(id);