报错截取:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
at android.view.ViewGroup.addViewInner(ViewGroup.java:4070)
at android.view.ViewGroup.addView(ViewGroup.java:3920)
at android.view.ViewGroup.addView(ViewGroup.java:3861)
at android.view.ViewGroup.addView(ViewGroup.java:3834)
关于这个报错问题 曾出现过两次
1、ViewPager 的 轮播时出现
2、点击RadioButton时 切换Fragment 出现报错
第一个问题 解决
这是在ViewPager的适配器中
@Override
public Object instantiateItem(ViewGroup container, int position) {
position%=mImageViewsFoot.size();
if(position<0){
position=mImageViewsFoot.size()+position;
}
ImageView img=mImageViewsFoot.get(position);
ViewParent viewParent=img.getParent();
if(viewParent!=null){
ViewGroup viewGroup= (ViewGroup) viewParent;
viewGroup.removeView(img);
}
container.addView(img);
return img;
}
@Override
public void destroyItem(ViewGroup container, int position, Object object) {
}
第二个问题 解决
因为 没有 返回attachToRoot == false
/**
* @param resource ID for an XML layout resource to load 填充界面ID
* @param root 如果有父容器 则写 ; 没有 则写null
* @param attachToRoot 他会自动把layout加到View hierarchy中
* @return 返回界面
*/
public View inflate(@LayoutRes int resource, @Nullable ViewGroup root, boolean attachToRoot)
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View view = inflater.inflate(R.layout.sub_recommand_fragment,container,false);