【问题标题】:View not attached to window manager (whats the solution?)视图未附加到窗口管理器(解决方案是什么?)
【发布时间】:2012-06-28 14:35:48
【问题描述】:

我从我的应用程序中收到了数百个错误报告,所有这些报告都是一样的。这真的很烦人,因为在我的测试设备(HTC Wildfire、Galaxy S I-II-III、Galaxy Mini、Galaxy Tab 10)中,这个错误从未发生过,无论是对我还是我的测试伙伴来说,看起来用户所做的事情与我们不同。

因此,我无法向您提供有关该情况的太多信息,我看到了一件事,它与对话框的关闭有关,实际上我从未通过代码调用。

这是错误:

java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:587)
at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:324)
at android.view.WindowManagerImpl$CompatModeWrapper.removeView(WindowManagerImpl.java:151)
at android.app.Dialog.dismissDialog(Dialog.java:328)
at android.app.Dialog$1.run(Dialog.java:119)
at android.app.Dialog.dismiss(Dialog.java:313)
at android.app.Dialog.cancel(Dialog.java:1113)
at hu.kulcssoft.ingyenkonyv.reader.Reader$JavaScriptInterface$1.run(Reader.java:199)
at android.os.Handler.handleCallback(Handler.java:605)
at android.os.Handler.dispatchMessage(Handler.java:92)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4424)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:784)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:551)
at dalvik.system.NativeStart.main(Native Method)

有人可以帮助我吗?由于这个问题,我每周收到 30-40 次错误报告,我真的无法弄清楚为什么会发生这种情况。

我们将不胜感激所有建议。谢谢,

【问题讨论】:

  • 在任何后台工作完成后,您似乎正在关闭一个对话框,但该活动不存在,如在旋转的情况下,因此需要适当检查,如上下文为空,显示 dilaog 等等。 ....
  • 我的猜测是您的活动在对话框关闭之前完成..
  • 那么,如果我像 userSeven7s 所说的那样在 onFinish 或 onDestroy 中将其关闭,是否可以解决问题?

标签: android android-view android-dialog illegalargumentexception


【解决方案1】:

关闭启动活动的onFinishonDestroy 中的对话框。

或/和

不要让您的 Activity 处理方向变化。

您可能会在这些答案中找到一些帮助: java.lang.IllegalArgumentException: View not attached to window manager

【讨论】:

  • 如果我在 onPause 中这样做会怎样?它是在 onFinish 和 onDestroy 之前运行的第一个。但是无论如何感谢您的建议,如果我更新我的应用程序并且错误不会再出现,我只能接受它作为答案:) 也许一周左右。
  • 在 Android 4.1 之前,即使 Activity 不支持,锁屏也可以改变方向,并且锁屏只是在您的 Activity 之上。当您查看它时(4.1 之前),您的活动已经收到 onResume :|
【解决方案2】:
 @Override
            public void onConfigurationChanged(Configuration newConfig) {
                // TODO Auto-generated method stub
                super.onConfigurationChanged(newConfig);
                YourProgressDialog.dismiss();
            }

同样,您可以在活动的 onFinsh() 和 OnDestroy() 或 OnBackPressed() 上使用它取决于错误的上下文。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-03-23
    • 2014-05-20
    • 2012-06-09
    • 1970-01-01
    • 1970-01-01
    • 2013-11-01
    • 2011-01-20
    相关资源
    最近更新 更多