gpt4 book ai didi

android - 具有 3 个 fragment 的 ViewPager 从中间 fragment 的两侧加载 fragment

转载 作者:太空狗 更新时间:2023-10-29 14:03:03 25 4
gpt4 key购买 nike

我有 3 个 fragment A、B 和 C。它们被设置为选项卡选项卡 A、选项卡 B、选项卡 C 和适配器,如下面的代码所示。我已经设置了我的寻呼机适配器,使得中间选项卡、选项卡 B 加载第一个

adapter = new PagerAdapter(getSupportFragmentManager(),tabLayout.getTabCount());
if (viewPager != null) {
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(1);
}

这一切都很好,但是当我第一次从选项卡 B 导航到选项卡 C 时,它工作得很好。但是,当我第一次从选项卡 B 导航到选项卡 A 时,它显示 fragment B 而不是 A,当我第二次导航(选项卡 B 到选项卡 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 不转载可以调用setRetainInstance(true)

如果您需要查找标签的 fragment ,则可以通过 FragmentTransaction 类使用您的标签创建它。

对于 ViewPager,FragmentPagerAdapter fragment 指定其标签可以在其 source 中看到

有一个方法让 fragment 名称(int viewId, long id) 分配 fragment 标签类型:

private static String makeFragmentName(int viewId, long id) {
return "android:switcher:" + viewId + ":" + id;
}

其中 viewId - id ViewPager,id - fragment 的位置。

或使用 setOffscreenPageLimit

mViewPager.setOffscreenPageLimit(mViewPager.getCount());

关于android - 具有 3 个 fragment 的 ViewPager 从中间 fragment 的两侧加载 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34340582/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com