没有连接到窗口管理器的Android浏览 [英] android View not attached to window manager
本文介绍了没有连接到窗口管理器的Android浏览的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我有以下一些例外:
java.lang.IllegalArgumentException:如果视图没有连接到窗口管理器
在android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355)
在android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:191)
在android.view.Window $ LocalWindowManager.updateViewLayout(Window.java:428)
在android.app.Dialog.onWindowAttributesChanged(Dialog.java:596)
在android.view.Window.setDefaultWindowFormat(Window.java:1013)
在com.android.internal.policy.impl.PhoneWindow.access $ 700(PhoneWindow.java:86)
在com.android.internal.policy.impl.PhoneWindow $ DecorView.drawableChanged(PhoneWindow.java:1951)
在com.android.internal.policy.impl.PhoneWindow $ DecorView.fitSystemWindows(PhoneWindow.java:1889)
在android.view.ViewRoot.performTraversals(ViewRoot.java:727)
在android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
在android.os.Handler.dispatchMessage(Handler.java:99)
在android.os.Looper.loop(Looper.java:123)
在android.app.ActivityThread.main(ActivityThread.java:4338)
在java.lang.reflect.Method.invokeNative(本机方法)
在java.lang.reflect.Method.invoke(Method.java:521)
在com.android.internal.os.ZygoteInit $ MethodAndArgsCaller.run(ZygoteInit.java:860)
在com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
在dalvik.system.NativeStart.main(本机方法)
我用Google搜索一下,看看它有什么做的弹出式广告和旋转屏幕,但没有提到我的code。
的问题是:
- 有没有办法找出 什么时候这个问题 发生了什么?
- 在比旋转屏幕外,是否有其他事件或动作触发这个错误?
- 如何prevent这种情况发生?
解决方案
我有这个问题,即在一个屏幕方向的变化,AsyncTask的前活动完成完成进度对话框。我好像通过设置对话框为空的onPause()
,然后解雇前的AsyncTask的检查这对解决这个问题。
@覆盖
公共无效的onPause(){
super.onPause();
如果((mDialog = NULL)及!&安培; mDialog.isShowing())
mDialog.dismiss();
mDialog = NULL;
}
...在我的AsyncTask:
在preExecute保护无效(){
mDialog = ProgressDialog.show(mContext,,保存更改...
真正);
}
保护无效onPostExecute(对象结果){
如果((mDialog = NULL)及!&安培; mDialog.isShowing()){
mDialog.dismiss();
}
}
I am having some of the following exceptions:
java.lang.IllegalArgumentException: View not attached to window manager
at android.view.WindowManagerImpl.findViewLocked(WindowManagerImpl.java:355)
at android.view.WindowManagerImpl.updateViewLayout(WindowManagerImpl.java:191)
at android.view.Window$LocalWindowManager.updateViewLayout(Window.java:428)
at android.app.Dialog.onWindowAttributesChanged(Dialog.java:596)
at android.view.Window.setDefaultWindowFormat(Window.java:1013)
at com.android.internal.policy.impl.PhoneWindow.access$700(PhoneWindow.java:86)
at com.android.internal.policy.impl.PhoneWindow$DecorView.drawableChanged(PhoneWindow.java:1951)
at com.android.internal.policy.impl.PhoneWindow$DecorView.fitSystemWindows(PhoneWindow.java:1889)
at android.view.ViewRoot.performTraversals(ViewRoot.java:727)
at android.view.ViewRoot.handleMessage(ViewRoot.java:1633)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:4338)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:521)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:860)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:618)
at dalvik.system.NativeStart.main(Native Method)
I have googled it and see that it has something to do with popups and turning the screen, but there is no reference to my code.
The questions are:
- is there a way to find out exactly when this issue is happening?
- other than turning the screen, is there another event or action that triggers this error?
- how do I prevent this to happen?
解决方案
I had this issue where on a screen orientation change, the activity finished before the AsyncTask with the progress dialog completed. I seemed to resolve this by setting the dialog to null onPause()
and then checking this in the AsyncTask before dismissing.
@Override
public void onPause() {
super.onPause();
if ((mDialog != null) && mDialog.isShowing())
mDialog.dismiss();
mDialog = null;
}
... in my AsyncTask:
protected void onPreExecute() {
mDialog = ProgressDialog.show(mContext, "", "Saving changes...",
true);
}
protected void onPostExecute(Object result) {
if ((mDialog != null) && mDialog.isShowing()) {
mDialog.dismiss();
}
}
这篇关于没有连接到窗口管理器的Android浏览的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文