android - FragmentStatePagerAdapter 返回错误的位置但正确的 fragment

标签 android android-fragments android-viewpager

我有一个名为 MainActivity 的 Activity ,它有一个 ViewPager 和一个 TabLayout。 ViewPager 有 4(四)个 fragment 绑定(bind)在那里。我有一个关于(也许)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() 中重新创建它们。

This version of the pager is more useful when there are a large number of pages, working more like a list view. When pages are not visible to the user, their entire fragment may be destroyed, only keeping the saved state of that fragment.

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

相关文章:

android - Android ABI 的目标 exe(ndk 构建)

java - 在 NDK 中调用 java 代码不起作用

Android Activity 导航保存状态

android - 如何在 fragment 之间导航时消除白色闪烁/闪光?

java - 一起使用 Fragment 和 AppCompatActivity 类

android - 当我们使用 SQLite 时,当我们使用 content provider 时,当我们使用 Shared preference 时

java - 如何将 AIDE 项目导入 IntelliJ?

android - 如何在 Android 中为每个 ViewPager 显示一个 JSON 对象?

android - Viewpager Inside Recyclerview As Item 使用 Viewpager 防止滚动 Recyclerview

android - Zxing图书馆条码扫描有时会暂停或显示黑屏