当使用ViewPager滑动发生java.lang.IllegalStateException: The specified child already has a parent.异常时的解决方案

本文详细介绍了在处理滑动视图时遇到的控件重复添加问题,并提供了解决方案。通过在实例化Item前检查控件的父容器是否存在,若存在则先解除与原有父容器的关系,从而避免了重复添加的问题。同时,文中展示了`destroyItem()`方法中不额外操作的效果良好。

这种异常是该控件在前面已经添加过一个父控件,当再次滑动重复执行instantiateItem方法,会重复添加,解决方法是先判断其父容器是否存在,如存在,先和此子控件解除关系

代码如下:

@Override
	public Object instantiateItem(View arg0, int arg1) // 实例化Item
	{
		/**
		 * 防止向左滑动
		 */
		ImageView imageView = (ImageView) viewList.get(arg1%viewList.size());
		if(imageView.getParent()!=null){
			((ViewPager)imageView.getParent()).removeView(imageView);
		}
		((ViewPager) arg0).addView((View) imageView, 0);
	
		return imageView;
		
	}

destroyItem()方法中可以不写任何东西效果会好一点
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值