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

这种异常是该控件在前面已经添加过一个父控件,当再次滑动重复执行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()方法中可以不写任何东西效果会好一点

你可能感兴趣的:(android)