美文网首页Android解决Bug篇Android专题
完美解决ViewPager使用中的The specified c

完美解决ViewPager使用中的The specified c

作者: 千夜零一 | 来源:发表于2020-09-28 12:09 被阅读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实现轮播图:图片无限轮播+动态切换+小圆点切换+透明标题

相关文章

网友评论

    本文标题:完美解决ViewPager使用中的The specified c

    本文链接:https://www.haomeiwen.com/subject/rqjoyktx.html