android - 为什么alertDialog在主屏幕上显示?

时间:2017-03-10 10:04:03

标签: android android-dialog

我在应用程序类的onCreate期间有一个alertDialog提示符 (我添加了<uses-permission android:name="android.permission.SYSTEM_ALERT_WINDOW" />

我已将 setCancelable 设置为 false ,但它确实成功阻止用户按下后退按钮。

这是我迄今取得的成就,这也是我想要的。

但是,当我按下主页按钮时,应用程序确实“消失了”#34;但不知何故,对话框仍显示在主屏幕上,这就是我不想要的。

我期待的是后退按钮不应该做任何事情(这是我所取得的成就)。

当用户点击主页按钮时,整个应用包括对话应该消失。但不知何故,当我点击主页按钮时,对话框仍出现在主屏幕上......

3 个答案:

答案 0 :(得分:1)

这是因为在创建AlertDialog时,您可能会传递ApplicationContext而不仅仅是Context

通过遵循Android框架指南,您不应在Application类中进行任何UI更改。在你的片段活动中做。

在Activity类中这样做:

new AlertDialog.Builder(this)

或片段中的这个:

new AlertDialog.Builder(getContext)

如果您的应用程序进入后台状态,它将消失。

答案 1 :(得分:0)

试试这个,

        myDialog.setOnKeyListener(new DialogInterface.OnKeyListener() {
            @Override
            public boolean onKey(DialogInterface dialog1, int keyCode, KeyEvent event) {
                if (keyCode == KeyEvent.KEYCODE_BACK) {
                    return true;
                }
                return false;
            }
        });

答案 2 :(得分:0)

这样可以解决问题: -

dialog.setOnKeyListener(new Dialog.OnKeyListener() {
        @Override
        public boolean onKey(DialogInterface dialogs, int keyCode,
                             KeyEvent event) {

            if (keyCode == KeyEvent.KEYCODE_BACK) {
                 return true;
            }
            if (keyCode == KeyEvent.KEYCODE_HOME) {
                 // Do your stuff here...
                 return true;
            }
            return false;
        }
    });