Android getItem调用了两次,这导致tab1和tab2都在FragmentPagerAdapter中执行
我有一个滑动标签,三个标签有三个不同的片段。FragmentPagerAdapter中的getItem方法调用了两次。我的第一个选项卡加载本地数据,并且与下两个选项卡(选项卡2、选项卡3)的布局不同。Tab2和Tab3从服务器获取数据并相应地加载 我的问题是,第一次加载两次调用的getItem,这导致tab1和tab2都被执行。虽然tab1只包含本地数据,但由于执行了两次调用tab2并从服务器获取数据 我不想在tab1中执行tab2及其功能,以此类推Android getItem调用了两次,这导致tab1和tab2都在FragmentPagerAdapter中执行,android,android-fragments,fragmentpageradapter,Android,Android Fragments,Fragmentpageradapter,我有一个滑动标签,三个标签有三个不同的片段。FragmentPagerAdapter中的getItem方法调用了两次。我的第一个选项卡加载本地数据,并且与下两个选项卡(选项卡2、选项卡3)的布局不同。Tab2和Tab3从服务器获取数据并相应地加载 我的问题是,第一次加载两次调用的getItem,这导致tab1和tab2都被执行。虽然tab1只包含本地数据,但由于执行了两次调用tab2并从服务器获取数据 我不想在tab1中执行tab2及其功能,以此类推 getItem()代码: @Override
getItem()
代码:
@Override public Fragment getItem(int position) {
Fragment fragment = null;
switch (position) {
case 0: fragment = new CommentFragment(); break;
case 1: fragment = new AllPostFragment(); break;
case 2: fragment = new TodayFragment(); break;
}
return fragment;
}
所以,我在寻找解决办法。如果可以的话,请帮助我 在ViewPager中,您的ViewPager将加载的屏幕(片段)数量是有限制的。您可以通过调用ViewPagers setOffscreenPageLimit方法来设置 但是,如果检查,它会告诉您必须至少加载1个屏幕外页面:
private static final int DEFAULT_OFFSCREEN_PAGES = 1;
public void setOffscreenPageLimit(int limit) {
if (limit < DEFAULT_OFFSCREEN_PAGES) {
Log.w(TAG, "Requested offscreen page limit " + limit
+ " too small; defaulting to " + DEFAULT_OFFSCREEN_PAGES);
limit = DEFAULT_OFFSCREEN_PAGES;
}
// ...
}
当一个选项卡中有两个片段时,通常两个片段都将启动并“并行”运行。这是正常的行为。您可以使用某种或类似的方法手动控制片段的生命周期。是。在每个片段中调用此方法,并在其上调用您的方法等:
override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser)
if(isVisibleToUser)
loadData()
}
- 不要把它写在第一个片段里李>
override fun setUserVisibleHint(isVisibleToUser: Boolean) {
super.setUserVisibleHint(isVisibleToUser)
if(isVisibleToUser)
loadData()
}