【发布时间】:2015-12-17 17:20:48
【问题描述】:
我有 3 个片段 A、B 和 C。它们设置为选项卡选项卡 A、选项卡 B、选项卡 C 和适配器,如下面的代码所示。我已经设置了我的寻呼机适配器,以便中间选项卡,选项卡 B 加载第一个
adapter = new PagerAdapter(getSupportFragmentManager(),tabLayout.getTabCount());
if (viewPager != null) {
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(1);
}
这一切都很好,但是当我第一次从选项卡 B 导航到选项卡 C 时,它可以完美运行。但是,当我第一次从 Tab B 导航到 Tab A 时,它显示片段 B 而不是 A,当我第二次导航(Tab B 到 Tab A )时,它现在按预期工作。我将如何处理这种初始滞后和选项卡不匹配的问题。
public class PagerAdapter extends FragmentStatePagerAdapter {
int mNumOfTabs;
public PagerAdapter(FragmentManager fm, int NumOfTabs) {
super(fm);
this.mNumOfTabs = NumOfTabs;
}
@Override
public Fragment getItem(int position) {
switch (position) {
case 0:
FragmentA A = new FragmentA();
return A;
case 1:
FragmentB B = new FragmentB();
return B;
case 2:
FragmentC C = new FragmentC();
return C;
default:
return null;
}
}
@Override
public int getCount() {
return mNumOfTabs;
}
}
【问题讨论】:
-
你想每次在它们之间滑动时都返回一个新的 Fragment 吗?我认为保留页面之间的 Fragment 实例更有意义,这样就不会丢失任何数据。
-
片段的内容在滑动时会改变,所以我需要新的实例..不能缓存它们
-
如果您有 3 个选项卡,只需将 3 个传递给您的适配器。为什么使用 tabLayout.getTabCount()?您的标签计数是动态的吗?
-
没有标签计数是静态的 3 个
标签: android android-fragments android-tabs