我有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);
}

07-24 09:47
查看更多