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

lik*_*udo 12 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)
Run Code Online (Sandbox Code Playgroud)

我得到这个致命错误,因为视图不在窗口管理器中.有没有办法检查windowmanager之前是否已经添加了视图?我在源代码中没有看到任何这样的方法

Jst*_*wll 32

您可以检查视图的窗口标记是否为空:

if(view.getWindowToken() != null){
    WindowManager.removeView(view);
}
Run Code Online (Sandbox Code Playgroud)

你也可以抓住异常:

try{
    WindowManager.removeView(view);
}catch(IllegalArgumentException e){
    Log.e(debug_tag, "view not found");
}
Run Code Online (Sandbox Code Playgroud)


Abe*_*bal 8

这也是检查其是否已添加到窗口的更好方法。

if (view.getParent() != null)) {
    windowsManager.removeView(view);
}
Run Code Online (Sandbox Code Playgroud)