【问题标题】:FragmentStatePagerAdapter return wrong position but right fragmentFragmentStatePagerAdapter 返回错误的位置但正确的片段
【发布时间】:2016-09-10 21:53:48
【问题描述】:

我有一个名为 MainActivity 的 Activity,它有一个 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

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

我的代码运行不佳,但我得到了片段显示,例如它的 switch(),但不是关于其中的代码

【问题讨论】:

    标签: android android-fragments android-viewpager


    【解决方案1】:

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

    当有大量页面时,此版本的寻呼机更有用,更像列表视图。当页面对用户不可见时,它们的整个片段可能会被销毁,只保留该片段的已保存状态。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-07-24
      • 2014-04-19
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多