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