最近在写一个小程序哈,过程中遇到了java.lang.IllegalArgumentException: View not attached to window manager的错误,也上网找了不少解决的办法,但是,很不幸的是,网上的办法貌似都对我这种情况没用哇>_<
先把网上搜到的方法贴一贴哈~如果有同鞋遇到这样的问题可以针对自己的具体情况选择相应的解决办法啦^_^
网上的方法之一:
引起的原因:
A应用在使用Intent显示启动其他应用,当关闭其他应用显A应用界面时报错。
解决方法1:
A应用使用startActivityForResult(intent)启动其他应用
解决方法2:
关闭其他应用时每次都使用Intent重新拉起一遍A应用
**************************************
我的问题是:在A中启动B,B中有线程操作,结束时涉及到对话框的dismiss。如果在操作尚未结束时,按下HOME键,线程后台操作。此时重新进去A,等到线程操作完成就会出现这个异常。此时应该做一个判断,如下:
// Dismiss the Dialog only when the parent Activity is still alive.if (SelectContactsActivity!=null&&!SelectContactsActivity.this.isFinishing()) {
mProgressDialog.dismiss();
}
网上的方法之二:
在一个Activity A 中调用B中一个用来多线程操作的方法 这个方法中用线程控制了popupwindow的弹出和关闭当我按下返回键的时候就抛出了这样的错误,在网上查了很久,还是不怎么理解,不过问题还是得到解决了。
我是这么做的:把B中的popupwindow变量传递到A中 然后在onDestroy()方法中dismiss。
下面说说我自己的情况哈~
我的问题其实就在于运行程序的时候按下了HOME键,随后又重新进入程序的运行界面,最后在按BACK退出程序的时候出现了这样的错误,这里头是因为我有一个浮动窗口在Acitivity的onDestory方法中去remove这个窗口的view了……但是,其实在重新进入程序界面的时候,已经程序已经跟那个窗口脱离了,再remove的时候当然就会出现如题所述的问题啦
我的解决办法也贴一下喽~
其实,方法很简单啦~:在重新进入程序的运行界面的时候,是会调用Activity的onResume方法的,现在就只要在onResume方法中先remove掉原来的那个浮动窗口,然后紧接着再创建一个这样的窗口就可以解决上面的错误啦~~
哈哈,简单吧~~~~~~~~