2 nana4ever nana4ever 于 2012.11.29 14:28 提问

如何给ViewPager提供很多的Fragments

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

 }

肯定还有别的方法实现。大家有什么好的建议吗?

2个回答

CSDN_Ask
CSDN_Ask   2012.11.29 16:21
已采纳

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);
}
Mkite
Mkite 好想法
4 年多之前 回复
cytown
cytown   2012.11.29 15:11

ViewPager 是用来横向切换屏幕使用的,比如Google Play,左右划屏使用的就是ViewPager,确实需要关联一个FragmentPagerAdapter,用来获得响应的fragment。但如果你只是需要一个fragment这种,就完全不需要使用ViewPager了,只需要一个FragmentActivity来根据参数等载入不同的fragment就可以了。

建议你参考这个页面:
http://developer.android.com/reference/android/app/Fragment.html

zhangwude2301
zhangwude2301 能具体谈谈吗?不是很懂你的意思,如果能举例子就太感谢了。
2 年多之前 回复
Csdn user default icon
上传中...
上传图片
插入图片