[英]Android Dialog throwing not attached to window manager
我有以下引發異常的代碼。 除了嘗試/捕獲之外,有沒有辦法解決這個問題?
@Override
public void onDestroy() {
if(dialog != null && dialog.isShowing())
dialog.dismiss();
super.onDestroy();
}
例外
Fatal Exception: java.lang.IllegalArgumentException: View=DecorView@2fee9e1[EventActivity] not attached to window manager
at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:648)
at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:548)
at android.view.WindowManagerImpl.removeViewImmediate(WindowManagerImpl.java:162)
at android.app.Dialog.dismissDialog(Dialog.java:778)
at android.app.Dialog.dismiss(Dialog.java:754)
at com.exposure.fragments.BracketFragment.onDestroy(BracketFragment.java:191)
at androidx.fragment.app.Fragment.performDestroy(Fragment.java:2830)
at androidx.fragment.app.FragmentManagerImpl.moveToState(FragmentManagerImpl.java:1028)
at androidx.fragment.app.FragmentManagerImpl.moveFragmentToExpectedState(FragmentManagerImpl.java:1238)
at androidx.fragment.app.BackStackRecord.executePopOps(BackStackRecord.java:496)
at androidx.fragment.app.FragmentManagerImpl.executeOps(FragmentManagerImpl.java:2076)
at androidx.fragment.app.FragmentManagerImpl.executeOpsTogether(FragmentManagerImpl.java:1869)
at androidx.fragment.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManagerImpl.java:1824)
at androidx.fragment.app.FragmentManagerImpl.execPendingActions(FragmentManagerImpl.java:1727)
at androidx.fragment.app.FragmentManagerImpl$2.run(FragmentManagerImpl.java:150)
at android.os.Handler.handleCallback(Handler.java:938)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loopOnce(Looper.java:226)
at android.os.Looper.loop(Looper.java:313)
at android.app.ActivityThread.main(ActivityThread.java:8669)
at java.lang.reflect.Method.invoke(Method.java)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:571)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1135)
調用onDestroy()
時,視圖可能已分離,您將收到此異常。 您應該將代碼移至onPause()
@Override
public void onPause() {
super.onPause();
if(dialog != null && dialog.isShowing())
{
dialog.dismiss();
}
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.