最近开发通过addView 去动态加载 View的时候报了一个错
代码是这样写的,结果报了异常
The specified child already has a parent. You must call removeView() on the child's parent first.
意思就是这个子view 已经有一个parent了,你需要先在这个子view的parent先将其移除才可以
然后就带着这样一个疑问,这个子view是如何判断parent的,带着这样一个疑问去源码查看,本来想通过搜索上面那段英文去找抛异常的代码,结果没想到源码是这么写的
难怪搜不到
之前好像写过一个关于addView类似的博文,这个抛异常的方法主要是这个
addViewInner()
那么child的parent怎么得到的呢
在刚刚上面这个方法中,后面的代码里
这里child里的mParent指向了当前的viewGoup 这样就完成了绑定,然后child.gerParent()返回的就是这个mParent
这个mParent 在View 类
这个ViewParent 是一个接口
所以修改后的代码师这样的