这是我的代码
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- As FragmentPAgerAdapter自行完成所有检查,然后为什么它仍在重新实例化片段。我是否需要按照here
提及的方式执行此操作3-我正在使用ListFragments所有3个listfragment使用不同的适配器哪里是setAdapter的适当位置?我是在onActivityCreated中做的。
4-为什么fm.setRetainInstance(true)不起作用? (我希望将其设为true将不会重新实例化片段)
希望我能清楚地解决问题..
答案 0 :(得分:2)
您需要了解的第一件事是“Pager Adapters如何工作”:
假设您在寻呼机适配器中有3个项目:
这是适配器模式正在运行。希望它能帮助您找到答案。