Android开发中如何解决Fragment +Viewpager滑动页面重复加载的问题

所属分类: 软件编程 / Android 阅读数: 49
收藏 0 赞 0 分享

前言

之前在做一个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网络编程之获取网络上的Json数据实例

这篇文章主要介绍了Android网络编程之获取网络上的Json数据实例,本文用完整的代码实例讲解了在Android中读取网络中Json数据的方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中的windowSoftInputMode属性详解

这篇文章主要介绍了Android中的windowSoftInputMode属性详解,本文对windowSoftInputMode的9个属性做了详细总结,需要的朋友可以参考下
收藏 0 赞 0 分享

Android网络编程之UDP通信模型实例

这篇文章主要介绍了Android网络编程之UDP通信模型实例,本文给出了服务端代码和客户端代码,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中使用ListView实现漂亮的表格效果

这篇文章主要介绍了Android中使用ListView实现漂亮的表格效果,本文用详细的代码实例创建了一个股票行情表格,需要的朋友可以参考下
收藏 0 赞 0 分享

Android中刷新界面的二种方法

这篇文章主要介绍了Android中刷新界面的二种方法,本文使用Handler、postInvalidate两种方法实现界面刷新,需要的朋友可以参考下
收藏 0 赞 0 分享

Android SDK三种更新失败及其解决方法

这篇文章主要介绍了Android SDK三种更新失败及其解决方法,需要的朋友可以参考下
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(一)

Android3.0(API level 11)开始,Android设备不再需要专门的菜单键。随着这种变化,Android app应该取消对传统6项菜单的依赖。取而代之的是提供anction bar来提供基本的用户功能
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(二)

这次将继续上一篇文章没有讲完的Menu的学习,上下文菜单(Context menu)和弹出菜单(Popup menu)
收藏 0 赞 0 分享

Android学习笔记——Menu介绍(三)

今天继续昨天没有讲完的Menu的学习,主要是Popup Menu的学习,需要的朋友可以参考下
收藏 0 赞 0 分享

Android显示网络图片实例

这篇文章主要介绍了Android显示网络图片的方法,以实例形式展示了Android程序显示网络图片的方法,非常具有实用价值,需要的朋友可以参考下
收藏 0 赞 0 分享
查看更多