码迷,mamicode.com
首页 > 其他好文 > 详细

我来谈谈ViewPager搭配FragmentAdapter的数据丢失问题

时间:2015-06-14 18:38:36      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

技术分享

先来一张碎片Fragment的生命周期图开开胃......

首先呢,我来介绍一下:

当我们使用Viewpager搭配FragmentPagerAdapter进行滑动的时候,某些情况下会发现前边几页自己手动产生的数据会被清空掉,对于这个碎片的滑动:

它的出现和消失只是和Activity一样,是一个是否在栈顶的关系,当非栈顶碎片出现再栈顶的时候,它就会从碎片的onCreateView这个生命周期开始走到onDestroyView之前,如果你把adapter这种装数据的对象放在了onCreateView及以下的生命节点里,当碎片重新回到栈顶之后,adapter一定会被重新创建,所以数据丢失。。。。解决方案就是将adapter的实例化放在onCreate里。


再来谈谈如果将adapter的实例化放在了onCreateView及以下的解决方案:

 使用setOffscreenPageLimit来设置ViewPager的预加载页数,可以同样保存数据。这个东西它的作用是预加载下x个页面,当我们预加载的页数x大于等于 总页数-1时,也就是说,在第一次如果就预加载了所有的页面,今后的滑动所有页面的每一个生命周期都不会再走一次,相当于栈顶有多个碎片。。。。当然啦,如果不是所有,随着总有一个以上的碎片被压入栈顶以下,肯定会有数据的丢失,除非你把adapter的初始化重放一下位置。。。。 

源码解析(转):http://blog.csdn.net/bob1993_dev/article/details/46491797


我来谈谈ViewPager搭配FragmentAdapter的数据丢失问题

标签:

原文地址:http://blog.csdn.net/bob1993_dev/article/details/46491993

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!