The specified child already has a parent. You must call removeView().... 解决方法

这句话翻译过来就是:子view已经存在父视图, 如果你想要用你必须移除父视图。


个人出现问题环境:我是动态生成Imageview 之后添加到ImageViews 数组里然后放到ViewPager ,实现轮播图效果。


跟据这个提示我就去想办法去移除父视图找好了好久,试了不少办法都没能解决。但上天不负有心人,把ImageView 放在循环里动态生成就解决了。


原因分析:之前ImageView 只是new一次,但赋值是 是跑了很多遍,所以添加到ImageViews数组里的ImageView都是一个对象,所以在ViewPager的适配器里的


@Override
public Object instantiateItem(View container, int position) {
    final View view = ImageViews.get(position);
    ViewPager viewPager = (ViewPager) container;
    viewPager.addView(view);

    return view;
}
把ImageView添加到ViewPager里跑第二遍的时候会提示已经存在父视图,以为第一遍的时候已经添加到里ViewPager。
所以我要把生成ImageView 放到循环里,这样每循环一遍的ImageView都是不同的对象,就不会出现父视图重复添加。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值