【问题标题】:How to close the current dialog in other class - Android如何关闭其他类中的当前对话框 - Android
【发布时间】:2017-07-31 11:20:36
【问题描述】:

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

非常感谢。

【问题讨论】:

  • 你可以在那个类中调用dismiss方法
  • 确保在关闭活动之前关闭对话框,否则您将面临android.view.WindowLeaked 异常。
  • dimiss() 从 onPostExecute 就足够了
  • 如果我没有对话框的引用,我该如何关闭()对话框?

标签: android dialog


【解决方案1】:

您可以通过多种方式做到这一点。

  1. 在 asynctask 构造函数中传递对话框对象并使用此引用将其关闭。
  2. 传递类引用并使用该引用调用该类的方法,该方法包含对话框关闭代码

【讨论】:

    【解决方案2】:

    如果你想访问你的对话框(我猜是 DialogFragment 扩展),你有很多方法:

    a) 使您的 BackgroundWorkerAsyncTask 成为 DialogFragment 的内部类,从而能够访问您父级的属性。

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

    c) 从 BackgroundWorkerAsyncTask 的构造函数中传入要管理的对话框,然后在 postExecute 中将其关闭。

    等等

    选择适合您需要的任何东西。

    【讨论】:

      【解决方案3】:

      简单使用:

      alertDialogue.dismiss();
      

      【讨论】:

      • 但是如何将 alertDialogue 与我当前打开的自定义对话框联系起来?
      • 不需要我用另一个解决方案来解决问题,我只是在我的 BackgroundWorker 中传递了我的对话框的构造函数。谢谢
      • 那是 awsm 老兄.. 继续。
      猜你喜欢
      • 1970-01-01
      • 2017-02-22
      • 1970-01-01
      • 2016-10-13
      • 1970-01-01
      • 2018-02-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多