片段寻呼适配器片段获取项目位置错误?



因此,由于某种原因,当我在选项卡式活动上切换选项卡时,我的位置错误。

在我的帖子底部,当我启动我的应用程序时,您可以看到我的日志猫,选项卡 1 和选项卡 2 调用它们的 oncreateview。

位置 0 切换到 1,即使我在选项卡 1 上,它必须是位置 0。

所以我的问题是,当我更改选项卡时,会显示错误的数据和错误的 logcat 信息。

例如,我更改为选项卡 2,logcat 显示我从选项卡 3 调用的 oncreateview ?

我该如何解决这个问题?

谢谢

public class SectionsPagerAdapter extends FragmentPagerAdapter {
private int numOfTabs;
SectionsPagerAdapter(FragmentManager fm, int numOfTabs) {
super(fm);
this.numOfTabs = numOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position){
case 0:
Log.e(TAG, "Pos: "+ position);
return new Tab1();
case 1:
Log.e(TAG, "Pos: "+ position);
return new Tab2();
case 2:
Log.e(TAG, "Pos: "+ position);
return new Tab3();
case 3:
Log.e(TAG, "Pos: "+ position);
return new Tab4();
case 4:
Log.e(TAG, "Pos: "+ position);
return new Tab5();
default:
return null;
}
}
@Override
public int getCount() {
// Get total pages
return numOfTabs;
}
}

日志猫

.activities.MainActivity: Pos: 0
.activities.MainActivity: Pos: 1
.fragments.Tab1: onCreateView called!
.fragments.Tab2: onCreateView called!

ViewPager 默认加载 2 个选项卡。因此,当您首次打开应用程序时,getItem 会被调用两次。当您转到 tab2 时,ViewPager 会提前加载 tab3,以便滚动流畅。请参阅屏幕外页面限制。

最新更新