2012-12-07 78 views
1

例子:Android AlertDialog如何阻止第二次點擊確定按鈕?

System.out.println("in!"); 
AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
    dialog.setMessage("test!!!"); 
    dialog.setPositiveButton(R.string.dialog_ok, 
     new OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       System.out.println("Only one click!"); 
      } 
    }); 
    dialog.show(); 

日期:
了!
in!
只需點擊一下!
只需點擊一下!
只需點擊一下!
只需點擊一下!

+1

你想在第一次點擊後禁用按鈕或什麼? – kosa

+0

我想做出不可能的第二次點擊。 – user1879118

+1

這是壞的設計,對話框不應該這樣... – JoxTraex

回答

4

獲取按鈕(正面)並將其設置爲false。

System.out.println("in!"); 
AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
dialog.setMessage("test!!!"); 
dialog.setPositiveButton(R.string.dialog_ok, 
    new OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
      // disable on 1st click; 
      final AlertDialog alertDialog = (AlertDialog)dialog; 
      alertDialog.getButton(DialogInterface.BUTTON_POSITIVE).setEnabled(false); 
      System.out.println("Only one click!"); 
     } 
}); 
dialog.show(); 
0

您需要禁用它。我推薦一個標誌,它必須存儲在課程級別。

Boolean hasBeenClicked=false; 


System.out.println("in!"); 
AlertDialog.Builder dialog = new AlertDialog.Builder(this); 
    dialog.setMessage("test!!!"); 
    dialog.setPositiveButton(R.string.dialog_ok, 
     new OnClickListener() { 
      public void onClick(DialogInterface dialog, int which) { 
       if (!hasBeenClicked) 
       { 
        hasBeenClicked=true; 
        System.out.println("Only one click!"); 
       } 
      } 
    }); 
    dialog.show(); 
2

我不明白爲什麼有人可以在alertdialog上點擊第二次,因爲按鈕在執行某些操作後應該關閉對話框。 爲什麼你不關閉對話框 dialog.dismiss() ?

+1

在對話被實際解除之前,該操作可能會排隊。如果您進行任何需要很短時間的操作,您可以在實際發生解僱之前再次點擊該按鈕,這將觸發第二次回叫。 – stuckj

相關問題