我正在使用FragmentPagerAdapter在我的应用中的4个片段之间导航。但我面临一个奇怪的问题。当我调试我的应用程序时,我发现当启动MainActivity时,getItem中的索引值加载到0,因此加载第0个索引的Fargment,然后索引更改为1并加载第一个索引处的片段,因此获取片段的顺序有点不安。我不知道我是否错过了什么。但我真的无法弄清楚这个问题。这是我的FragmentPagerAdapter类:
public class TabsPagerAdapter extends FragmentStatePagerAdapter {
Context context;
public TabsPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.context = context;
}
@Override
public Fragment getItem(int index) {
switch (index) {
case 0:
return new FragmentA();
case 1:
return new FragmentB();
case 2:
return new FragmentC();
case 3:
return new FragmentD();
}
return null;
}
@Override
public int getCount() {
// get item count - equal to number of tabs
return 4;
}
}
这个课程表现不像我想要它的工作方式。 UI按照我想要的方式加载。我的意思是,假如我单击FragmentB()的Tab,将生成下一个Fragment的索引,即FragmentC(),但在我的设备上,我会看到FragmentB()我知道我无法正确解释这个问题但是如果有人可以提供帮助,我仍然会感激不尽,但请不要犹豫不决。在此先感谢:)
答案 0 :(得分:0)
不确定我是否完全理解了FragmentStatePagerAdapter
加载片段(从...开始向前和向后)的起始位置。此行为由适配器setOffscreenPageLimit(int number)
控制。 Javadoc声明默认偏移量为1,这意味着在调试活动之后单击“Frag B”时将注意到“Frag C”加载...由于此偏移(当加载Frag A / Frag C时加载了Frag B)。