gpt4 book ai didi

android - FragmentPagerAdapter getItem() 在每次滑动时调用

转载 作者:行者123 更新时间:2023-11-29 00:22:12 25 4
gpt4 key购买 nike

这是我的代码

public static class TestPagerAdapter extends FragmentPagerAdapter {

Context mContext;

public TestPagerAdapter(FragmentManager fm, Context context) {
super(fm);
this.mContext = context;
}

@Override
public int getCount() {
//it is 3
return NUM_ITEMS;
}

@Override
public Fragment getItem(int position) {

Fragment fm = null;
switch (position) {
case 0 :
case 1 :
case 2 :
fm = TestListFragment.getInstance(mContext, position);
//fm.setRetainInstance(true);
}

return fm;
}
}

要实例化的TestFragment中的静态方法

public static TestListFragment getInstance(Context context, int position) {

fragmentInstance = new TestListFragment();
fragmentInstance.context = context;
Bundle args = new Bundle();
args.putInt("num", position);
fragmentInstance.setArguments(args);
return fragmentInstance;
}

问题:

1- TestPagerAdapter 中的每个位置共有三个 TestListFragment 实例。一切正常,但是当滑动回到第 0 或第 2 时,它会调用 getitem 并完成所有操作,例如 onCreateView 和 onActivityCreated,这是预期的行为吗?

2- 由于 FragmentPAgerAdapter 会自行检查所有这些,因此它仍在重新实例化 fragment 。我是否需要按照提到的方式执行此操作 here

3- 我正在使用 ListFragments 所有 3 个 listfragment 使用不同的适配器 setAdapter 的适当位置在哪里?我在 onActivityCreated 中进行。

4- 为什么 fm.setRetainInstance(true) 不起作用? (我期望让它成为 true 不会重新实例化 fragment )

希望我把问题说清楚了..

最佳答案

您需要了解的第一件事是“寻呼机适配器的工作原理”:

假设您在寻呼机适配器中有 3 个项目:

  • 第 1 项和第 2 项将调用 getItem()。
  • 当您向下滑动到第二个 getItem 时将调用第三个。
  • 当您移动到第 3 位时,getItem 将不会调用。
  • 当您返回第 2 个 getItem 时,将调用第一个项目。

这是 hwo 适配器模式正在工作。希望它能帮助您找到答案。

关于android - FragmentPagerAdapter getItem() 在每次滑动时调用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22351390/

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