我有20个片段活动,它们都代表了不同的机制游戏屏幕。
我想把它们都放到viewpager里。唯一想到的是这个伪代码:
public static class MyAdapter extends FragmentPagerAdapter {
@Override
public Fragment getItem(int position) {
switch(position){
case 0:
return new Fragment1();
case 1:
return new Fragment2();
.........................
another 20 case statements here
.........................
case 20:
return new Fragment21();
}
}
}
但应该有别的办法。会感谢你的帮助。
最佳答案
FragmentPagerAdapter
足够聪明,不需要每次都实例化片段。所以你的代码没问题。也就是说,记忆中保存的20个片段可能有点太多了。看看FragmentStatePagerAdapter
,它会自动保存和恢复片段,而不会一直将它们保存在内存中。
您可以拥有片段列表并从列表中返回,而不是使用switch
:
List<Fragment> fragments;
public Fragment getItem(int pos) {
return fragments.get(pos);
}
public void addFragment(Fragment f) {
fragments.add(f);
}