当我尝试执行WindowManager.removeView()时,
E/AndroidRuntime( 2445): java.lang.IllegalArgumentException: View=android.widget.LinearLayout{41a03700 V.E..... ......I. 0,0-0,0} not attached to window manager
E/AndroidRuntime( 2445): at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java:370)
E/AndroidRuntime( 2445): at android.view.WindowManagerGlobal.removeView(WindowManagerGlobal.java:299)
E/AndroidRuntime( 2445): at android.view.WindowManagerImpl.removeView(WindowManagerImpl.java:79)
我得到了这个致命的错误,因为视图不在窗口管理器中。 有没有办法检查windowmanager之前是否已经添加了视图? 我在source
中没有看到任何此类方法答案 0 :(得分:32)
您可以检查视图的窗口标记是否为空:
if(view.getWindowToken() != null){
WindowManager.removeView(view);
}
你也可以抓住异常:
try{
WindowManager.removeView(view);
}catch(IllegalArgumentException e){
Log.e(debug_tag, "view not found");
}
答案 1 :(得分:3)
它也是检查已经添加到窗口的更好方法。
if (view.getParent() != null)) {
windowsManager.removeView(view);
}