国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 系統 > Android > 正文

Android開發中如何解決Fragment +Viewpager滑動頁面重復加載的問題

2019-12-12 02:31:12
字體:
來源:轉載
供稿:網友

前言

之前在做一個Viewpager上面加載多個Fragment時總會實例化已經創建好的Fragmnet對象類似

  viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {      @Override      public Fragment getItem(int position) {        switch(position){        case 0:        fragments=new Fragmnet01();        break;          case 1:        fragments=new Fragmnet02();        break;        .....      }        return fragments;      }      @Override      public int getCount() {        return listTabs.size();      }    });

其實仔細想一下,這樣是很不合理的,首先你一直實例化對內存是一種浪費另外Viewpager具有預加載性當我們加載某一個Fragmnet時它就會把它的左邊和右邊都會加載(開頭和結尾例外。)所以為了防止重復加載浪費資源,我們可以使用一個對象數組來加載fragment,當每次位置為空的時候我們就可以在該位置上面加載一個布局具體代碼

//定義一個對象數組并給定長度 fragments=new MyFragment[listTabs.size()];    viewPager.setAdapter(new FragmentPagerAdapter(getSupportFragmentManager()) {      @Override      public Fragment getItem(int position)       {      //在這里判斷如果Fragmnet[position]當前頁面沒有加載的話我們再次在上面加載        if(fragments[position]==null){          //這里只是寫一個構造方法把值傳到fragment里面          MyFragment my = MyFragment.getInstance(listTabs.get(position).getId());          fragments[position]=my;        }        return fragments[position];      }      @Override      public int getCount() {        return listTabs.size();      }    });

在fragment里面當然你也可以用bundler來傳值。

 public static MyFragment getInstance(int id){    MyFragment myFragment=new MyFragment();    Bundle bundle=new Bundle();    bundle.putInt("id",id);    myFragment.setArguments(bundle);    return myFragment;  }

以上所述是小編給大家介紹的Android開發中如何解決Fragment +Viewpager滑動頁面重復加載的問題 ,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 连江县| 闵行区| 武鸣县| 石渠县| 闽清县| 金华市| 南充市| 明星| 余姚市| 拉孜县| 桐庐县| 青铜峡市| 贡嘎县| 家居| 芮城县| 新郑市| 三亚市| 梁山县| 调兵山市| 通化县| 大竹县| 高安市| 丰台区| 夏邑县| 正蓝旗| 醴陵市| 台北县| 尼勒克县| 本溪| 奉节县| 长白| 雅安市| 台州市| 镇赉县| 梅河口市| 厦门市| 东至县| 田东县| 迭部县| 景东| 龙州县|