在程序中有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
不用每次都实例化fragments。所以你的代码是ok的。
20个fragment放在一个内存中是有点多。试一下FragmentStatePagerAdapter
,会自动保存和恢复fragment,不需要把fragment一直放在内存中。
不要使用switch。你可以把fragment放在一个列表中,然后再从列表中返回。
List<Fragment> fragments;
public Fragment getItem(int pos) {
return fragments.get(pos);
}
public void addFragment(Fragment f) {
fragments.add(f);
}
ViewPager 是用来横向切换屏幕使用的,比如Google Play,左右划屏使用的就是ViewPager,确实需要关联一个FragmentPagerAdapter,用来获得响应的fragment。但如果你只是需要一个fragment这种,就完全不需要使用ViewPager了,只需要一个FragmentActivity来根据参数等载入不同的fragment就可以了。
建议你参考这个页面:
http://developer.android.com/reference/android/app/Fragment.html