所以由于某些原因,当我切换选项卡活动上的选项卡时,我得到的位置错误。
在我文章的底部,当我启动我的应用程序时,您可以看到我的logcat,选项卡1和选项卡2分别称为它们的oncreateview。
即使我在选项卡1上(位置必须为0),位置0也会切换为1。
所以我的问题是,当我更改选项卡时,显示了错误的数据和错误的logcat信息。
例如,我更改为选项卡2,logcat会显示我从tab3调用的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;
}
}
Logcat
.activities.MainActivity: Pos: 0
.activities.MainActivity: Pos: 1
.fragments.Tab1: onCreateView called!
.fragments.Tab2: onCreateView called!
答案 0 :(得分:1)
ViewPager默认情况下会加载2个标签。因此,第一次打开应用程序时,getItem会被调用两次。当您转到tab2时,ViewPager会预先加载tab3,以便滚动平滑。参见offscreenPageLimit。