Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/194.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何关闭任何正在运行的对话框,而不知道哪个是对话框?_Android - Fatal编程技术网

Android 如何关闭任何正在运行的对话框,而不知道哪个是对话框?

Android 如何关闭任何正在运行的对话框,而不知道哪个是对话框?,android,Android,我在找这样的东西 Activity currentActivity = ((MyApp)context.getApplicationContext()).getCurrentActivity(); …但对于对话 类似于getCurrentView()的东西,它返回在前面运行的当前视图,然后我可以从外部关闭它们 我没有对话框的实例可以调用Disclose 我能和他一起控制任何一扇窗户吗 我创建的对话框如下所示: final AlertDialog.Builder dialogBuilder =

我在找这样的东西

Activity currentActivity = 
((MyApp)context.getApplicationContext()).getCurrentActivity();
…但对于对话

类似于
getCurrentView()
的东西,它返回在前面运行的当前视图,然后我可以从外部关闭它们

我没有对话框的实例可以调用Disclose

我能和他一起控制任何一扇窗户吗

我创建的对话框如下所示:

final AlertDialog.Builder dialogBuilder = new AlertDialog.Builder(mContext).setView(dialogView)
                .setTitle(mPolicyInterface.getTitle()).setMessage(mPInterface.getSubTitle());

有三种方法可以做到这一点

  • 为该对象创建单例对象的步骤
  • 使用对话框片段的步骤
  • 设置回按侦听器

    dialog.setOnKeyListener(新建dialog.OnKeyListener(){


  • 你可能应该将当前对话框的单音存储在使用DialogFragment、生成器或其他东西的地方?我不使用DialogFragment,我使用builder@NikosHidalgo你能添加一些相关代码吗?@NikosHidalgo我添加了一个我创建的对话框示例,顺便说一句,这对我没有帮助,我有很多对话框s、 我不能用fragment dialog全部替换它们,也不能为它们中的每一个创建一个单例,并且我的应用程序不会单击您订购的back press,因为我试图在某些情况下强制应用程序转到主窗口,但如果有打开的对话框,则此对话框不会关闭。
                    @Override
                    public boolean onKey(DialogInterface arg0, int keyCode,
                                         KeyEvent event) {
                        // TODO Auto-generated method stub
    
                        //Back Key for edit shift amount fix
                        if (keyCode == KeyEvent.KEYCODE_DEL) {
                            return false;
                        }
                        if (keyCode == KeyEvent.KEYCODE_BACK) {
    
                            dialog.dismiss();
                        }
                        return true;
                    }
                });