2011-08-18 60 views
18

关闭我有一个警告对话框是这样的:如何防止一个警告对话框入门通过后退按钮

AlertDialog.Builder oyunaBaslaDialog = new AlertDialog.Builder(this); 
    oyunaBaslaDialog.setMessage("A Takımı"); 
    oyunaBaslaDialog.setNeutralButton("Başla!", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface arg0, int arg1) { 
        oyunOyna(); 
       } 
      }); 
    oyunaBaslaDialog.show(); 

在onCreate方法将显示该对话框。我希望它只是通过它上面的按钮关闭。但硬件后退按钮也可以关闭此对话框而不执行对话框的操作。

我不想让后退按钮关闭这个对话框,我该怎么办?

回答

10

实现setOnKeyListener并捕获KeyEvent.KEYCODE_BACK。 如果您在此方法中返回true,则对话框将不会关闭。

+4

这样,当用户按下对话框上的按钮时,您实际上可以做任何您想要的操作。 – CommonMan

+0

这是我唯一有用的解决方案,因为我想将操作添加到后退按钮。 – Roel

58

使用Dialog.setCancelable()

设置此对话框是否取消与返回键。

在你的代码,这将是:

oyunaBaslaDialog.setCancelable(false); 
+0

真棒谢谢你! – Batuhan

+1

但是,如果您只是想根据特定条件决定后退键是否关闭对话框呢? – aggregate1166877

+8

如果你的对话框在DialogFragment中,你需要为DialogFragment调用setCancelable(false),否则Back将关闭这个片段。链接到文档:http://developer.android.com/reference/android/app/DialogFragment.html#setCancelable%28boolean%29 – Ognyan

0

有一个名为方法, bulder.setCancelable()。通过这个默认设置取消 '' 与.override它,

bulder.setCancelable(false)