2011-12-12 49 views
1

我需要更改什麼來使此顯示進入警報對話框?Android:上下文菜單到警報對話框

@Override 
     public void onCreateContextMenu(ContextMenu menu, View v, 
       ContextMenuInfo menuInfo) { 
      super.onCreateContextMenu(menu, v, menuInfo); 
      menu.add(0, DELETE_ID, 0, R.string.menu_delete); 
     } 

     @Override 
     public boolean onContextItemSelected(MenuItem item) { 
      switch(item.getItemId()) { 
       case DELETE_ID: 
        AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
        mDbHelper.deleteNote(info.id); 
        fillData(); 
        return true; 
      } 
      return super.onContextItemSelected(item); 
     } 

我是Android的初學者,所以我仍然不知道如何實現一些東西。我希望這顯示爲警報對話框。目前用戶需要使用longkeypress來激活刪除。但是,我想提醒它作爲一個警告對話框,並有選擇供用戶選擇,如果他想真的刪除它。

回答

3

在你的情況DELETE_ID做到這一點:

new AlertDialog.Builder(this).setTitle("Confirm Delete") 
     .setMessage("Do you want to delete this blank?") 
     .setPositiveButton("Ok", new DialogInterface.OnClickListener() { 
      @Override 
      public void onClick(DialogInterface dialogInterface, int i) { 
       AdapterContextMenuInfo info = (AdapterContextMenuInfo) item.getMenuInfo(); 
       mDbHelper.deleteNote(info.id); 
       fillData(); 
      } 
     }) 
     .setNeutralButton("Cancel", null) // don't need to do anything but dismiss here 
     .create() 
     .show(); 

你需要把刪除的邏輯在確定點擊收聽。

+0

它正常工作,謝謝。我忘了清除它,我的意思是當用戶長按鍵從列表中按下一個項目時,如果要從列表中刪除項目,則會顯示提示對話框。 – Kev

1

您只需要實現以下功能。它會工作。

@Override 
public void onCreateContextMenu(ContextMenu menu, View v, ContextMenuInfo menuInfo) 
{ 
Log.e(LOGTAG, "Tao menu"); 
if(v == expList) 
{ 
    super.onCreateContextMenu(menu, v, menuInfo); 
    //AdapterContextMenuInfo aInfo = (AdapterContextMenuInfo) menuInfo; 

    // We know that each row in the adapter is a Map 
    //HashMap map = (HashMap) simpleAdpt.getItem(aInfo.position); 
    menu.setHeaderTitle("Options"); 
    menu.add(1, 1, 1, "Reprint"); 
    menu.add(1, 2, 1, "Void"); 

    menu.getItem(0).setOnMenuItemClickListener(new OnMenuItemClickListener() 
    { 
     public boolean onMenuItemClick(MenuItem clickedItem) 
     { 

      return true; 
     } 
    }); 

    menu.getItem(1).setOnMenuItemClickListener(new OnMenuItemClickListener() 
    { 
     public boolean onMenuItemClick(MenuItem clickedItem) 
     { 

      return true; 
     } 
    }); 
} 

}