建议不要一次性实例化所有fragment然后再传入ViewPager,这样初始化界面的时候内存较大
正确的使用方式是需要的时候再去创建fragment,使用方式如下:
//1.初始化adpater
mAdapter = new HomePagerAdapter(getSupportFragmentManager(), CHANNELS);
mViewPager.setAdapter(mAdapter);
//2.HomePagerAdapter类
public class HomePagerAdapter extends FragmentPagerAdapter {
private CHANNEL[] mList;
public HomePagerAdapter(FragmentManager fm, CHANNEL[] datas) {
super(fm);
mList = datas;
}
//【关键代码段,避免一次性创建所有的framgent】
@Override
public Fragment getItem(int position) {
int type = mList[position].getValue();
switch (type) {
case CHANNEL.MINE_ID:
return MineFragment.newInstance();
case CHANNEL.DISCORY_ID:
return DiscoryFragment.newInstance();
case CHANNEL.FRIEND_ID:
return FriendFragment.newInstance();
case CHANNEL.VIDEO_ID:
return VideoFragment.newInstance();
}
return null;
}
@Override
public int getCount() {
return mList == null ? 0 : mList.length;
}
}