【问题标题】:How can I remove previous 2 fragments from viewpager adapter once I swipe to open 3rd fragment?滑动打开第 3 个片段后,如何从 viewpager 适配器中删除前 2 个片段?
【发布时间】:2016-03-30 06:54:22
【问题描述】:

我在视图寻呼机适配器中有三个片段。我可以从左向右或从右向左滑动并显示这些片段。但是,我想防止用户在到达第三个片段后向后滑动。就像,一旦他打开第三个片段,他应该无法查看前两个片段

公共类 PagerAdapter 扩展 FragmentPagerAdapter {

FragmentManager mFragmentManager;
private ArrayList<View> views = new ArrayList<View>();

public PagerAdapter(FragmentManager fm) {

    super(fm);
    mFragmentManager = fm;
}

@Override
public Fragment getItem(int i) {

        switch (i)
        {
            case 0 :
                return new FragmentOne();

            case 1 :
                return new FragmentTwo();

            case 2 :
                return new FragmentThree();

            default :
                break;
        }

    return null;
}

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

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

@Override
public void destroyItem(ViewGroup container, int position, Object object) {
    container.removeView(views.get(0));
}

}

【问题讨论】:

    标签: android-fragments android-viewpager


    【解决方案1】:

    是的,你应该可以。查看 android 开发者文档。 FragmentPagerAdapter

    public void destroyItem(ViewGroup 容器,int 位置,Object 对象)

    删除给定位置的页面。适配器负责从其容器中删除视图,尽管它只必须确保在从 finishUpdate(ViewGroup) 返回时完成此操作。

    【讨论】:

    • 所以,在这种情况下,如果我使用 destrouItem,我只能通过单个位置!我怎样才能通过 2 个片段?就像,一旦我加载了第 3 个片段,我应该无法返回片段 2 和片段 1
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-12-20
    相关资源
    最近更新 更多