Android解决Bug篇Android专题

完美解决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实现轮播图:图片无限轮播+动态切换+小圆点切换+透明标题

上一篇下一篇

猜你喜欢

热点阅读