国产探花免费观看_亚洲丰满少妇自慰呻吟_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滑動頁面重復加載的問題 ,希望對大家有所幫助,如果大家有任何疑問歡迎給我留言,小編會及時回復大家的!

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 义乌市| 监利县| 五河县| 通山县| 海城市| 洮南市| 徐汇区| 白朗县| 柯坪县| 新宾| 双柏县| 姚安县| 株洲县| 佛坪县| 杂多县| 安仁县| 遂平县| 汤原县| 巴彦淖尔市| 开远市| 堆龙德庆县| 松原市| 濮阳市| 玉溪市| 巴楚县| 文水县| 苏尼特左旗| 灵川县| 阳原县| 广宗县| 梅河口市| 潮州市| 启东市| 寻甸| 钟山县| 白城市| 清河县| 城市| 镇宁| 法库县| 神池县|