2013-04-09 89 views
4

我有ViewPager,它包含兩個碎片[ Fragment 1][Fragment 2]。現在基於選擇在[Fragment 1]一個新片段將被添加到ViewPager ,它看起來像這樣替換ViewPager中的碎片位置

[Fragment 1][NewAddedFragment][Fragment 2]

,並根據第一片段中的用戶選擇,我可能會刪除NewAddedFragmentViewPager。然後,它會看起來像

[ Fragment 1][Fragment 2]

+0

也許這可以幫助您 - http://stackoverflow.com/questions/7263291/viewpager-pageradapter-not-updating-the-view – jaibatrik 2013-04-09 14:36:55

+0

實際上沒有,關於在viewpager中更新片段內部視圖的鏈接 – user4o01 2013-04-09 14:51:35

+0

我的意思是在「PagerAdapter」中添加一個片段,然後在ViewPager上調用'notifyDataSetChanged()',以便'ViewPager'重新加載組件。 – jaibatrik 2013-04-10 06:40:09

回答

-1

看看實現 「FragmentPagerAdapter」那東西會包含這樣的備份適配器一個ArrayList集合類型字段中的「適配器」。

根據dataStructure的實現,您可以通過調用fragmentpageradapter上相應的add,set,insert方法來更改基礎集合。

然後,您在ViewPager中獲得新頁面的下一次調用應該反映對基礎集合的更改。如果沒有,你可能不得不在FragmentManager上調用'commit',但我不認爲在這種情況下需要這樣做。

public class BookPagerAdapter extends FragmentPagerAdapter private int currentPage = 0; private ArrayList mFragments;改變集合

public BookPagerAdapter(FragmentManager fm) { 
    super(fm); 
    mFragments = new ArrayList<Fragment>(); 
    mFragments.add(new PageFragment(BitmapFactory.decodeResource(getResources(), 
       R.drawable.icon_construction32), "TitlePage")); 


    } 

例如:

bpa.mFragments.add(new PageFragment(map));