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

首頁 > 系統 > Android > 正文

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

2019-10-22 18:32:46
字體:
來源:轉載
供稿:網友

前言

之前在做一個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滑動頁面重復加載的問題 ,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!


注:相關教程知識閱讀請移步到Android開發頻道。
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 凤山县| 蒙自县| 竹溪县| 河北区| 会昌县| 阜宁县| 宁乡县| 堆龙德庆县| 巴彦淖尔市| 嘉祥县| 紫金县| 化州市| 资溪县| 寿光市| 镇宁| 乌拉特中旗| 额尔古纳市| 宁远县| 肇州县| 玛沁县| 昌邑市| 磐安县| 自治县| 杭锦后旗| 徐州市| 东平县| 淮南市| 渭源县| 富民县| 酒泉市| 随州市| 宁明县| 灯塔市| 当雄县| 阜阳市| 塘沽区| 深水埗区| 油尖旺区| 蓬溪县| 高唐县| 闵行区|