繁体   English   中英

如何为ViewPager提供许多片段并避免错误代码?

[英]How do I supply many Fragments to ViewPager and avoid bad code?

我有20个FragmentActivity,它们都代表着机制不同的游戏画面。 我想将它们全部放在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);
}

使用FragmentStatePagerAdapter而不是FragmentPagerAdapter

FragmentStatePagerAdapter使用ArrayList存储片段,但是FragmentPagerAdapter使用getFragmentByTag

老实说,我认为这没有什么错,您会在很多游戏中看到类似的东西,例如菜单,游戏,暂停,游戏结束等屏幕。

我要说的是,每次更改到另一个页面时,是否实际上需要创建一个“新”片段。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM