關於viewpager 裏嵌套 listview 同時實現翻頁功能的「java.lang.IllegalStateException: The specified child..."異常處理

     這幾天作項目用到了ViewPager,由於它能夠實現左右划動多個頁面的效果,而後java

再每一個頁面裏使用ListView,運行時老是出現」PagerAdapter java.lang.IllegalStateException:ide

The specified child already has a parent. You must call removeView() ..."形成程序結束。spa

  調試時顯示在PagerAdapter適配器的:調試

@Override
public Object instantiateItem(ViewGroup container, int position)
{
   container.addView(views.get(position));
   return views.get(position);
}ci

 紅色代碼錯誤。很難理解新添加進來的view會自動綁定一個父類,因爲一個兒子view不能與兩個父類相關,因此rem

必得解綁。get

      在網上搜了不少解決辦法大可能是用mViewPager.setOffscreenPageLimit(views.size()); 這種方法不用判斷it

parent是否是已經存在,但多餘的listview仍是不能被destroy。io

下來貼下我解決問題的辦法,但願兄弟們不用困擾:List

@Override
public Object instantiateItem(ViewGroup container, int position)
{
   try{
    if(views.get(position).getParent()==null){
              container.addView(views.get(position));
    }else{
               ((ViewGroup)views.get(position).getParent()).removeView(views.get(position));               container.addView(views.get(position));            }    }catch(Exception e){       e.printStackTrace();    }    return views.get(position); }

相關文章
相關標籤/搜索