2017-09-27 117 views
0

以下是簡單的代碼:拋出: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

回答

1

這是因爲你的活動被破壞了。 檢查在調用進度對話框之前是否調用了finish().. 謝謝

1

嘗試此固定碼:

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

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

相關問題