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