我有一个名为 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/