抛出:IllegalArgumentException为ProgressDialog.dismiss()时它显示

问题描述:

以下是简单的代码:抛出:IllegalArgumentException为ProgressDialog.dismiss()时它显示

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) 
+1

IllegalArgumentException:“View = com.android.internal.policy.PhoneWindow $ DecorView {83559f5 VE ..... R .. ... D 0,0-1026,348}不附加到窗口管理器“。 错误说您的对话框不再附加到您当前的片段/活动。检查您的片段/活动在您的对话框关闭之前仍然可见。 – james

+0

谢谢你的提示。偶尔会在用户的日志中报告。我无法重现这一点。我刚刚添加了代码来检查活动。 – Hong

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

尝试此固定码:

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

REF:https://*.com/a/23586127/6759520