ViewPager和Fragment较好的使用方式

219 阅读1分钟

建议不要一次性实例化所有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;
     }
}