最近在调试一个关于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没有配对使用好。为了快速修复,所以前期还是通过捕捉前面的异常再进行相关处理来进行补救。
本文探讨了在使用WindowManager进行视图添加与移除操作时遇到的问题,详细分析了因试图重复添加或移除未添加的视图而引发的IllegalStateException与IllegalArgumentException异常,并提出了相应的解决方案。
3326

被折叠的 条评论
为什么被折叠?



