如何将Fragment添加到FragmentStatePagerAdapter的中间

时间:2014-08-14 11:49:33

标签: android android-fragments fragmentstatepageradapter pagerslidingtabstrip

我想用PagerSlidingTabStrip将Fragment添加到FragmentStatePagerAdapter的中间。但我只能在最后的适配器中添加新的Fragnent。这是代码:

public class TabsPagerAdapter extends FragmentStatePagerAdapter {
    private ArrayList<String> TABS = new ArrayList<String>();

    public TabsPagerAdapter(FragmentManager fm) {
        super(fm);
        TABS.add("First");
        TABS.add("Second");
        TABS.add("Third");
    }


    @Override
    public Fragment getItem(int position) {
        return CardFragment.newInstance(position);
    }

    @Override
    public Parcelable saveState() {
        return super.saveState();
    }

    @Override
    public int getCount() {
        return TABS.size();
    }


    @Override
    public String getPageTitle(int position) {
        return TABS.get(position);
    }


}

这是我添加新片段的地方

adapter.TABS.add(1, "ffff");

adapter.notifyDataSetChanged();

int k = viewPager.getCurrentItem();
viewPager.setCurrentItem(k + 1);

pagerSlidingTabStrip.notifyDataSetChanged();

1 个答案:

答案 0 :(得分:0)

我面临类似的问题,我通过在setAdapter()之前再次调用setCurrentItem来解决它,否则它将永远不会更新,直到列表滚动到索引middleIndex + 2:

viewPager.setAdapter(adapter);
viewPager.setCurrentItem(middleIndex);