2013-04-06 91 views
0

所以,我有一個簡單的代碼的事情:不同的行爲

private void promptToZap() { 
    DialogInterface.OnClickListener dialogClickListener = new DialogInterface.OnClickListener() { 
     @Override 
     public void onClick(DialogInterface dialog, int which) { 
      switch (which) { 
      case DialogInterface.BUTTON_POSITIVE: 
       startProgressBar(20); 
       break; 

      case DialogInterface.BUTTON_NEGATIVE: 
       gotoGrassLoop(); 
       break; 
      } 
     } 
    }; 

    overlay.setProgress(0); 
    AlertDialog.Builder builder = new AlertDialog.Builder(this); 
    builder.setMessage("CI is yellow, would you like to zap?").setPositiveButton("Yes", dialogClickListener).setNegativeButton("No", dialogClickListener).show(); 
} 

僅根據一這就是所謂的方法調用一次只有一次。

在變壓器上工作正常。它會提示一次,它完美地處理用戶選擇。

在Note 2和Galaxy Tab上,它會提示兩次。然後,當您從中選擇選項時,它會執行兩次結果。

所以,一般問題....

是他們的一種方式,以檢查是否已被顯示AlertDialog?

我怎樣才能使它只提示一次,而不是兩次?

任何幫助表示讚賞。

謝謝!

回答

0

好的,應該讓Google比我做的多一點。

但解決方案是類似於:How to prevent dialog to open twice

我只是用一個布爾值,isDialogShown和檢查,如果它是在調用.show(),那麼.show(後其設置爲true之前假),然後在按鈕/大小寫(開關)語句,將其重置爲false。

這適用於我的目的。