解决fragment与viewpager一起使用时fragment中的listview数据出现重复

转载地址:http://my.oschina.net/buobao/blog/644699?fromerr=OnaCVQp7

activity中需要显示一个切换页显示3个不同的视图数据,这里需要使用viewpager+fragment实现切换。在fragment中需要在onstart或者onresume中初始化加载数据。但是viewpager在切换fragment时会调用下一个fragment的多个回调,比如: 
在加载Tab-A时会实例化Tab-B中fragment,依次调用:onAttach、onCreate、onCreateView、onActivityCreated、onStart和onResume。同样切换到Tab-B时也会初始化Tab-C中的fragment。但是fragment中的数据(如读取的服务器数据)没有相应清除,导致重复加载数据。

解决方式:给pager设置一个缓存, 
mViewPager.setOffscreenPageLimit(3); 
这样在切换fragment时就不会重复加载数据。 
tab在切换时没用清除fragment中保存的数据可以看出fragment没有被重新创建,但是依次重新调用了以上的回调方法,给pagerview设置缓存量后在tab切换时没有重新调用以上的回调函数。 
ps:我们在使用viewpager时会定义一个适配器adapter,其中实例化了一个fragment列表,所以在tab切换时fragment都是已经实例化好的,所以在切换标签页时是不会重新实例化fragment对象的,因而在fragment中定义的成员变量是不会被重置的。所以为列表初始化数据需要注意这个问题

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值