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

时间:2022-02-26 20:34:16

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