在程序中有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);
}