Android对话框抛出未连接到窗口管理器

发布于 2025-02-10 15:26:55 字数 2244 浏览 2 评论 0原文

我有以下代码引发异常。其他然后尝试/捕获,无论如何是否可以解决此问题?

@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)

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)

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

如梦 2025-02-17 15:26:55

当调用ondestroy()时,可能会脱离视图,您将获得此例外。您应该将代码移至onpause()

@Override
public void onPause() {
    super.onPause();
    
    if(dialog != null && dialog.isShowing())
    {
       dialog.dismiss();
    }
}

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();
    }
}
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文