【问题标题】:How to Prevent an Alert Dialog Getting Closed by Back Button如何防止警报对话框被后退按钮关闭
【发布时间】:2011-10-30 03:02:02
【问题描述】:

我有一个这样的警告对话框:

    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 方法中。我希望它只是被它上面的按钮关闭。但是硬件返回按钮也可以在不执行对话框操作的情况下关闭此对话框。

我不希望后退按钮关闭此对话框,我该怎么办?

【问题讨论】:

    标签: android android-layout android-widget


    【解决方案1】:

    使用Dialog.setCancelable()

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

    在您的代码中,这将是:

    oyunaBaslaDialog.setCancelable(false);
    

    【讨论】:

    • 但是如果你只是想根据某些条件决定返回键是否关闭对话框呢?
    • 如果您的对话框在 DialogFragment 内,您需要为 DialogFragment 调用 setCancelable(false) 否则 Back 将关闭该片段。文档链接:developer.android.com/reference/android/app/…
    【解决方案2】:

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

    【讨论】:

    • 这样,当用户按下 Dialog 上的返回按钮时,您实际上可以做任何您想做的事情。
    • 这对我来说是唯一有用的解决方案,因为我想为后退按钮添加一个动作。
    【解决方案3】:

    有一个方法叫做, bulder.setCancelable()。默认情况下,此可取消设置为 'true'。覆盖它,

    bulder.setCancelable(false)
    

    【讨论】:

      猜你喜欢
      • 2012-08-22
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-11-13
      • 1970-01-01
      相关资源
      最近更新 更多