无法从FragmentStatePagerAdapter(ViewPager)中正确删除Fragment

时间:2016-05-25 17:52:04

标签: android android-fragments

我有ViewPager扩展FragmentStatePagerAdapter代码:

public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;

private ArrayList<Integer> page_indexes;

public PagerAdapter(FragmentManager fm, int NumOfTabs) {
    super(fm);
    this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {

    switch (position) {
        case 0:
            TabFragment1 tab1 = new TabFragment1();
            return tab1;
        case 1:
            TabFragment2 tab2 = new TabFragment2();
            return tab2;
        case 2:
            TabFragment3 tab3 = new TabFragment3();
            return tab3;
        case 3:
            TabFragment4 tab4 = new TabFragment4();
            return tab4;
        case 4:
            TabFragment5 tab5 = new TabFragment5();
            return tab5;
        case 5:
            TabFragment6 tab6 = new TabFragment6();
            return tab6;
        default:
            return null;
    }
}

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    // TODO Auto-generated method stub
    super.destroyItem(container, position, object);
    FragmentManager manager = ((Fragment) object).getFragmentManager();
    FragmentTransaction trans = manager.beginTransaction();
    trans.remove((Fragment) object);
    trans.commit();
}

@Override
public int getCount() {
    return mNumOfTabs;
}
}

在我的MainActivity中我在TabLayout中添加了标签

    tabLayout.addTab(tab1);
    tabLayout.addTab(tab2);
    tabLayout.addTab(tab3);//post
    tabLayout.addTab(tab4);
    tabLayout.addTab(tab5);//channels
    tabLayout.addTab(tab6);
    tabLayout.setTabGravity(TabLayout.GRAVITY_FILL);

这就是删除标签的方法

tabLayout.removeTab(tab3)
tabLayout.removeTab(tab5)

它在某些方面工作正常,因为现在我的Activity中只有4个选项卡,但问题是当我选择tab4之后的tab4,因为我删除了tab3它仍然显示tab3。所以这意味着只删除最后两个选项卡而不是指定的选项卡。

我知道我错过了什么,但不知道是什么,我试图谷歌它并经历了一些标签布局的文档,片段甚至检查了一些StackOverflow线程关于从ViewPager中删除标签但是这些方法对我来说不够清楚所以如果任何人都可以给我一些指导并帮助我,然后这对我来说真是太好了

0 个答案:

没有答案