[英]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.