【问题标题】:Correctly dismissing progress dialog正确关闭进度对话框
【发布时间】:2013-03-27 08:57:08
【问题描述】:

我有一个进度对话框,我需要关闭它然后完成应用程序。 我的做法是这样的:

new AlertDialog.Builder(MainActivity.this)
                            .setMessage("There has been a problem.")
                            .setPositiveButton("OK",
                                    new DialogInterface.OnClickListener() {
                                        public void onClick(
                                                DialogInterface dialog,
                                                int which) {
                                            dialog.dismiss();
                                            finish();
                                        }
                                    }).show();

尽管如此,我总是遇到著名的错误:

Caused by: android.view.WindowManager$BadTokenException: Unable to add window -- token android.app.LocalActivityManager$LocalActivityRecord@48189240 is not valid; is your activity running?
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):     at android.view.ViewRoot.setView(ViewRoot.java:505)
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:200)
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):     at android.view.WindowManagerImpl.addView(WindowManagerImpl.java:114)
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):     at android.view.Window$LocalWindowManager.addView(Window.java:424)
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):     at android.app.Dialog.show(Dialog.java:241)
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):     at android.app.ProgressDialog.show(ProgressDialog.java:107)
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):     at android.app.ProgressDialog.show(ProgressDialog.java:90)
05-23 16:56:44.573: ERROR/AndroidRuntime(2494):     at android.app.ProgressDialog.show(ProgressDialog.java:85)

我怎样才能没有问题地解雇它?我做得对吗?

非常感谢。

编辑:我可以完美地展示它,即使关闭它,用户也看不到任何错误,但在我的 LogCat 中我可以看到那个讨厌的错误。

【问题讨论】:

  • 你最初能显示它吗..?
  • 似乎您正在创建对话框,而您的活动不活动/不可见。如果对话框显示时不存在,则不能将活动用作对话框的上下文
  • @ngesh 我编辑了我的问题来回答你
  • 我在 Android 2.3.4 和 4.1 中测试了这段代码,它工作正常 - 对话框被关闭并且活动完成。也许问题来自其他地方?
  • 一旦活动进入暂停状态,就会发生此错误。所以我认为问题是在显示对话框时发生的,我想知道你什么时候显示对话框

标签: android android-activity progressdialog android-lifecycle


【解决方案1】:

我还没有测试过这个,虽然它应该可以工作。但是,作为替代方案,您可以在对话框的onClick 中调用finish(),在活动的onStop 中调用dialog.dismiss()

在 onStop 中调用dismiss将避免窗口泄漏警告消息。

【讨论】:

  • 这意味着我的对话框需要是一个类变量,因为我需要在 onStop 方法中访问它(以便关闭它),不是吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-07-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多