有没有办法检查android WindowManager是否已包含视图?

时间:2014-11-20 16:01:48

标签: android android-layout

当我尝试执行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

中没有看到任何此类方法

2 个答案:

答案 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);
}