Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/three.js/2.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_Dialog - Fatal编程技术网

如何关闭其他类中的当前对话框-Android

如何关闭其他类中的当前对话框-Android,android,dialog,Android,Dialog,我有一个自定义对话框,从中启动BackgroundWorker异步任务,我想在BackgroundWorker的后期执行中关闭当前对话框,但我不知道如何获取当前对话框,因为我是在另一个类中创建的 非常感谢。只需使用: alertDialogue.dismiss(); 您可以通过各种方式来实现这一点 在asynctask构造函数中传递对话框对象,并使用此引用将其取消 传递类引用并使用该引用调用该类的方法,该方法包含对话框代码 如果您想访问您的对话框(我想DialogFragment extend

我有一个自定义对话框,从中启动BackgroundWorker异步任务,我想在BackgroundWorker的后期执行中关闭当前对话框,但我不知道如何获取当前对话框,因为我是在另一个类中创建的

非常感谢。

只需使用:

alertDialogue.dismiss();

您可以通过各种方式来实现这一点

  • 在asynctask构造函数中传递对话框对象,并使用此引用将其取消
  • 传递类引用并使用该引用调用该类的方法,该方法包含对话框代码

  • 如果您想访问您的对话框(我想DialogFragment extended),您有很多方法:

    a) 使BackgroundWorkerAsyncTask成为DialogFragment中的一个内部类,以便能够访问父级的属性

    b) 如果您在其他类中需要它(这就是为什么我认为您将其作为一个外部类),您可以在DialogFragment中拥有自己的内部AsyncTask类,并从BackgroundWorkerAsyncTask扩展它

    c) 从BackgroundWorkerAsyncTask传入构造函数,并在postExecute中关闭要管理的对话框

    等等


    选择适合您需要的选项。

    您可以在该类中调用Disclose方法确保在关闭活动之前关闭对话框,否则您将面临android.view.WindowLeaked异常。从onPostExecuteHow I Disclose()开始,dimiss()就足够了如果我没有对话框的引用,该对话框会出现吗?但是如何将alertDialogue与当前打开的自定义对话框链接?不需要我用其他解决方案解决问题,我只是在BackgroundWorker中传递了对话框的构造函数。谢谢你,这是awsm,伙计,坚持下去。