当前位置: 首页 > 知识库问答 >
问题:

将进度对话框作为单例类使用是好的做法吗[重复]

凌鹏程
2023-03-14
public class ProgressDialogManager {

private static ProgressDialogManager manager = null;

private Context context;

private ProgressDialog pDialog = null;

private ProgressDialogManager(Context context) {
    this.context = context;

}

public static ProgressDialogManager getInstance(Context context) {
    if (manager == null)
        manager = new ProgressDialogManager(context);
    return manager;
}

public void showDialog(String msg) {
    if (pDialog == null)
        pDialog = new ProgressDialog(this.context);
    pDialog.setMessage(msg);
    pDialog.show();
}

public void closeDialog() {
    if (pDialog != null) {
        pDialog.dismiss();
    }
 }
}
android.view.WindowManager$BadTokenException: Unable to add window — token android.os.BinderProxy@447a6748 is not valid; is your activity running?

我的问题是把进度对话框练习成单例类好吗?错误的原因是什么?如何解决

共有1个答案

东门深
2023-03-14

Android.view.WindowManager$BadTokenException:无法添加窗口

当您试图在已完成的活动上显示对话框,并且传递其上下文以显示另一个活动中的对话框时,就会发生此异常。

您的代码创建了该场景:

现在,如果您试图显示对话框,那么它将抛出这个异常,因为您试图使用死亡context显示对话框。

要解决此问题,还在ShowDialog中传递上下文,并删除ShowDialog中的null检查对话框

public void showDialog(String msg, Context context) {
    pDialog = new ProgressDialog(context);
    pDialog.setMessage(msg);
    pDialog.show();
}

注意:不要将上下文作为任何类的单例成员,因为上下文一直在变化

 类似资料:
  • 问题内容: 我需要建立一个对话框来与项目列表中的任何项目一起使用。该对话框与项目无关,几乎相同,只是字段的值显然与项目相关。 我正在构建的指令正在从文件中读取模板,使用$ compile对其进行编译,然后将其绑定(链接)到该项目的范围。绑定的结果是一棵DOM树。为了使对话框可见,我需要将此树附加到现有DOM中的某些元素上。对话框的性质使得将其直接附加到body标签是有意义的。该对话框将与列表中的不

  • 在加载.obj模型时可以显示进度对话框。我试图调用RajawalivuforiaExampleRenderer.java中的ProgressDialog,但它说“Can't create handler inside thread that not calling looper.prepare()” 我在这里粘贴了部分代码:

  • 问题内容: 我正在尝试制作一个可以帮助我评估从Web资源下载文件的时间的应用程序。我发现了2个样本: 使用Android下载文件,并在ProgressDialog中显示进度 和 http://www.helloandroid.com/tutorials/how-download-fileimage-url- 您的设备 第二个示例显示了较小的下载时间,但是我不明白如何使用它来更新进度对话框。我认为在

  • 问题内容: 如果我们拥有and ,是否必然暗示这一点? 这是一个反例,但这是一个作弊: 而且我无法创建这样的反例: 为了澄清我的问题-在 不让相等 运算符做某些疯狂的事情的情况下,一个类是否有可能存在于两个不同的内存位置,或者导入系统会以某种方式防止这种情况发生? 如果是这样,我们如何证明这种行为- 例如,使用reload或做奇怪的事情? 如果不是,是否由语言保证或在任何地方进行了记录? 结语 :

  • 问题内容: 我最近开始使用“注释”出CSS代码的每一行。我了解到我实际上并没有发表评论。我只是在破坏它(我应该使用),但是它具有相同的效果。然后,该行以终止,以下代码可以正常工作。 我可以删除它,但是通常我不想这样做,以防以后要放回去,或者如果我回头看看我一直在使用什么。 例: 我可以解决这个问题,还是可能导致我出现问题? 问题答案: 首先,最重要的是:注释掉的代码是 代码的味道 ,应避免使用。我

  • 问题内容: 我的问题如下。我应该避免在Angular应用程序中使用任何种类的jQuery代码,因为与DOM交互只有一件事是合法的。另一个问题是,是否有人遇到无法找到其他解决方案但只能用jQuery快速编写代码的问题。 谢谢! 问题答案: 是的,这是一个不好的做法,但是有时它可以为您节省很多时间,特别是在您寻找插件时,仅在必要时执行此操作,并在其他解决方案可用时记下备注以将其切换回原来的状态。