完美解决ViewPager使用中的The specified c
2020-09-28 本文已影响0人
千夜零一
问题:
java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
说明:ViewPager无限轮播图实现中遇到的问题,viewPagerAdapter中添加View布局时,需要判断,若存在则remove移除后再添加View,不存在则直接添加View。
// 在父布局中添加View前先判断父布局中是否已经存在View
// 如果父布局中已经有了需要在添加前做remove操作
// 否则会报错Android-The specified child already has a parent. You must call removeView() on the child's parent first.
解决方法:
@Override
public Object instantiateItem(ViewGroup view, int position) {
int currentPosition = (position % images.size());
ImageView iv = images.get(currentPosition);
if (iv.getParent()!=null){
((ViewPager)iv.getParent()).removeView(iv);
}
Log.d("tag", "currentPosition == " + currentPosition);
view.addView(iv);
return iv;
}
具体使用ViewPager实现完整轮播图效果,请看我的这篇博客:用ViewPager实现轮播图:图片无限轮播+动态切换+小圆点切换+透明标题。