知乎 android app 是如何做到保存每个 tab 的浏览状态的

2017-03-03 12:46:05 +08:00
 jasonhui512

如题,底部的 tab 切换并不影响之前的浏览状态,比如最右面的 tab 我关注的,选一个问题进去浏览,切换到其他 tab 再回来,还是保持刚才的浏览状态不变,是 fragment 自带功能还是 onRestoreInstanceState 这些功能实现的?

10064 次点击
所在节点    Android
8 条回复
michaelye1988
2017-03-03 14:11:09 +08:00
fragment 相互切换不会对之前的浏览造成影响,注意检查一下 fragment 切换的时候是不是把之前的给销毁了又创建了一遍导致的
Bown
2017-03-03 14:24:02 +08:00
试试 ViewPager#setOffscreenPageLimit
zhaohui318
2017-03-03 14:24:55 +08:00
有可能是嵌套 fragment ,每一个 tab 是一个 fragment ,使用 getChildFragmentManager 来管理自己 tabFragment 里的 fragment ,这样就不必自己维护栈结构了
jasonhui512
2017-03-03 14:45:06 +08:00
@michaelye1988 fragment 里面有跳转啊,你试一下
hanity
2017-03-03 14:58:50 +08:00
创建用 add, 切换用 show 、 hide
wsxyeah
2017-03-03 16:01:57 +08:00
用 show/hide ,别用 replace
michaelye1988
2017-03-03 16:11:44 +08:00
@jasonhui512 我知道有跳转,你误会我的意思了,其它人也提示你了,如 @hanity 和 @wsxyeah 所说的方法,不要 replace 。
还有就是 @Bown 所说的,如果采用的是 ViewPager 和 Fragment 结合的方式,需要设置 setOffscreenPageLimit , ViewPager 中有几个 Fragment ,就需要设置为多少。它能帮你缓存住 Fragment ,不会被销毁。
ilumer
2017-03-04 02:05:47 +08:00
如果是 viewpager 的话,可以直接保存实例(fragmentpageradapter)或者设置缓存数量还有楼主的答案(fragmentstatepageradapter)

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/344594

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX