Mike Flynn
Mike Flynn

Reputation: 24325

Android Dialog throwing not attached to window manager

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

Answers (1)

Walid
Walid

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

Related Questions