首页 > 代码库 > windowmanger的addview,removeView方法出现的异常

windowmanger的addview,removeView方法出现的异常

最近在调试一个关于windowmanger添加或移除view时产生诡异的bug,问题就是出现在windowmanger.addview(View view)这行代码。

具体情况:代码走到这行,突然没法往下走了,程序没有崩溃,logcat里也没能抓到error级别的日志。


无意中,发现了warning级别的日志。

java.lang.IllegalStateException:xxx has already been added to the window manager.

错误产生的原因是在使用windowmanager.addView(View view)方法时试图添加一个已以被添加的view,

而后又尝试在使用windowmanager.addView(View view)之前调用windowmanager.removeView(View view),可没想到是又引发了另一个异常

java.lang.IllegalArgumentException: View not attached to window manager

错误产生的原因使用removeView方法时尝试移除一个就没有被添加的view导致了上述的错误。


上面的错误的产生,必然是在使用windowManger添加view或移除view没有配对使用好。为了快速修复,所以前期还是通过捕捉前面的异常再进行相关处理来进行补救。




windowmanger的addview,removeView方法出现的异常