FragmentStatePagerAdapter

FragmentStatePagerAdapter

我有一个称为MainActivity的活动,该活动具有ViewPager和TabLayout。 ViewPager具有4(四个)绑定在那里的片段。我有一个关于(也许)FragmentStatePagerAdapter的问题

我运行我的代码

public class MainPagerAdapter extends FragmentStatePagerAdapter {

    Fragment[] fragments;

    public MainPagerAdapter(FragmentManager fm) {
        super(fm);
        fragments = new Fragment[]{
                new FragProfile(),
                new FragScore(),
                new FragMoney(),
                new FragOther()
        };
    }

    @Override
    public Fragment getItem(int p) {
        Log.w("Fragment", String.valueOf(p));

        switch (p){
            case 0:
                return fragments[0];
            case 1:
                return fragments[1];
            case 2:
                return fragments[2];
            case 3:
                return fragments[3];
            default:
                return null;
        }
    }

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


在第一个选项卡上,我收到了此日志

09-10 20:05:29.683 17034-17034/ampersanda.elsys W/Fragment: 0
09-10 20:05:29.684 17034-17034/ampersanda.elsys W/Fragment: 1


在第二

09-10 20:11:03.970 17034-17034/ampersanda.elsys W/Fragment: 2


第三

09-10 20:11:54.534 17034-17034/ampersanda.elsys W/Fragment: 3


但是第四次我什么也没记录,回到第三次我得到了

09-10 20:14:07.373 17034-17034/ampersanda.elsys W/Fragment: 1


回到第二

09-10 20:14:50.241 17034-17034/ampersanda.elsys W/Fragment: 0


回到第一个,我又什么也没记录

我的代码运行不正常,但是我得到了Fragment像switch()一样的显示,但其中的代码却不一样

最佳答案

在您的情况下,应使用FragmentPagerAdapter,因为使用FragmentStatePagerAdapter时页面可能会被破坏,因此您需要在getItem()中重新创建它们。


  当存在大量页面(更像列表视图)时,此版本的分页器更加有用。当页面对用户不可见时,它们的整个片段可能会被破坏,仅保留该片段的保存状态。

关于android - FragmentStatePagerAdapter返回错误的位置,但返回正确的 fragment ,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/39426472/

10-12 04:09