Is there a way to check if android WindowManager already contains a view?

(转载)https://stackoverflow.com/questions/27044024/is-there-a-way-to-check-if-android-windowmanager-already-contains-a-view?noredirect=1&lq=1

When I try to do a 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)

I get this fatal error because the view was not in the window manager. Is there no way to check if windowmanager had already added the view before? I do not see any such method in the source

share improve this question
 

2 Answers

up vote 21 down vote accepted

You can check to see if the view's window token is null:

if(view.getWindowToken() != null){
    WindowManager.removeView(view);
}

You could also just catch the exception:

try{
    WindowManager.removeView(view);
}catch(IllegalArgumentException e){
    Log.e(debug_tag, "view not found");
}
share improve this answer

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值