[英]Passing position as an argument to Fragment In FragmentPagerAdapter
[英]FragmentPagerAdapter Fragment getItem wrong position?
因此,由于某些原因,当我在选项卡式活动中切换选项卡时,位置会出错。
在我的文章底部,您可以在启动应用程序时看到我的logcat,分别称为选项卡1和选项卡2的oncreateview。
即使我位于必须位于位置0的选项卡1上,位置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!
ViewPager默认情况下会加载2个标签。 因此,第一次打开应用程序时,getItem会被调用两次。 当您转到tab2时,ViewPager会预先加载tab3,以便滚动平滑。 参见offscreenPageLimit 。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.