显示时ProgressDialog.dismiss()的IllegalArgumentException

时间:2017-09-27 00:19:59

标签: android progressdialog

以下是简单的代码:

if (myProgressDialog.isShowing()) {
    myProgressDialog.dismiss();
}

有人可以解释为什么myProgressDialog.dismiss()有时会导致以下异常:

java.lang.IllegalArgumentException: View=com.android.internal.policy.PhoneWindow$DecorView{83559f5 V.E...... R......D 0,0-1026,348} not attached to window manager
Stack trace: java.lang.IllegalArgumentException: View=com.android.internal.policy.PhoneWindow$DecorView{83559f5 V.E...... R......D 0,0-1026,348} not attached to window manager
        at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:424)
        at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:350)
        at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:116)
        at android.app.Dialog.dismissDialog(Dialog.java:362)
        at android.app.Dialog.dismiss(Dialog.java:345)

2 个答案:

答案 0 :(得分:2)

试试这个固定代码:

 if (YourActivity.this.isDestroyed()) { // or call isFinishing() if min sdk version < 17
    return;
 } 
 if (myProgressDialog != null && myProgressDialog.isShowing()) {
    myProgressDialog.dismiss();
 }

参考:https://stackoverflow.com/a/23586127/6759520

答案 1 :(得分:2)

这是因为您的活动被破坏了。 在调用进度对话框之前,检查是否在类中调用了finish()。 感谢