如何防止警告对话框被返回按钮关闭

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 方法中显示的。我希望只能通过它上面的按钮关闭它。但是硬件返回按钮也可以关闭这个对话框而不需要执行对话框的操作。

我不希望使用返回按钮关闭这个对话框,我该怎么做?

3个回答

58

使用Dialog.setCancelable()方法:

设置此对话框是否可以使用后退键取消。

在您的代码中,可以这样实现:

oyunaBaslaDialog.setCancelable(false);

1
但是如果您只想根据某些条件决定返回键是否关闭对话框呢? - aggregate1166877
8
如果您的对话框位于DialogFragment中,您需要调用setCancelable(false)来防止Back按钮关闭该片段。文档链接:http://developer.android.com/reference/android/app/DialogFragment.html#setCancelable%28boolean%29 - Ognyan

10

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


4
当用户按下对话框的返回按钮时,您可以实际上做任何您想做的事情。 - CommonMan
这是我唯一有用的解决方案,因为我想要为返回按钮添加一个操作。 - Roel

0

有一个名为builder.setCancelable()的方法。默认情况下,它的可取消性设置为true。可以通过覆盖来修改:

bulder.setCancelable(false)

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接