2010-11-22 25 views
1

我有一個下面的僞代碼。Android - AlertDialog內onContextItemSelected不起作用

public boolean onContextItemSelected(MenuItem aItem) { 
     switch(aItem.getItemId()) { 
      case A: { 
       new AlertDialog.Builder(this) 
        .setIcon(android.R.drawable.ic_dialog_alert) 
        .setTitle("Delete") 
        .setMessage("Delete?") 
        .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
         @Override 
         public void onClick(DialogInterface dialog, int which) { 
          // do stuff A... 
         } 
        }); 

        // do stuff B... 

        return true; 
      } 
     } 
    } 

問題是它從不顯示警報對話框。然而,它按照「做東西B ...」中所述做的事情。

有誰知道爲什麼AlertDialog現在顯示?

謝謝!

回答

2

你需要.create().show()會解決這個問題:)

AlertDialog dialog = new AlertDialog.Builder(this) 
       .setIcon(android.R.drawable.ic_dialog_alert) 
       .setTitle("Delete") 
       .setMessage("Delete?") 
       .setPositiveButton("Yes", new DialogInterface.OnClickListener() { 
        @Override 
        public void onClick(DialogInterface dialog, int which) { 
         dialog.dismiss(); 
        } 
       }).create(); 
dialog.show(); 

當你不需要它了,你可以辭退()它。

編輯:抱歉。忘了.create():)

+0

我想它已經發生在我們所有人的某個時間。完全是 – Cristian 2010-11-22 04:53:10

+0

!不止一次:)我停止計算多久我忘記打電話.show()並且想知道,直到我發現問題並對自己生氣:D – 2010-11-22 04:55:34

+0

你好,非常感謝你的回答。這工作。在經歷了幾天的苦難之後,我覺得自己像個白癡。大聲笑。好吧,我想我會記得下一次。 (我是Android新手;))謝謝! – the5threvolution 2010-11-22 05:31:20