Reputation: 24325
I have the below code that throws an exception. Other then a try/catch, is there anyway to fix this?
@Override
public void onDestroy() {
if(dialog != null && dialog.isShowing())
dialog.dismiss();
super.onDestroy();
}
Exception
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)
Upvotes: 0
Views: 1246
Reputation: 720
When onDestroy()
is called, it may that the views are detached and you will get this exception. You should move your code to onPause()
@Override
public void onPause() {
super.onPause();
if(dialog != null && dialog.isShowing())
{
dialog.dismiss();
}
}
Upvotes: 0