jasonhui512
V2EX  ›  Android

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

  •  
  •   jasonhui512 · Mar 3, 2017 · 14553 views
  •   You need to sign in to view this topic
    This topic created in 3533 days ago, the information mentioned may be changed or developed.

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

    8 replies  •  2017-03-04 02:05:47 +08:00
    michaelye1988
    michaelye1988
    Mar 3, 2017
    1
    fragment 相互切换不会对之前的浏览造成影响,注意检查一下 fragment 切换的时候是不是把之前的给销毁了又创建了一遍导致的
    Bown
    Bown
    Mar 3, 2017
    2
    试试 ViewPager#setOffscreenPageLimit
    bqbkbz
    bqbkbz
    Mar 3, 2017
    3
    有可能是嵌套 fragment ,每一个 tab 是一个 fragment ,使用 getChildFragmentManager 来管理自己 tabFragment 里的 fragment ,这样就不必自己维护栈结构了
    jasonhui512
    jasonhui512
    OP
    Mar 3, 2017
    4
    @michaelye1988 fragment 里面有跳转啊,你试一下
    hanity
    hanity
    Mar 3, 2017
    5
    创建用 add, 切换用 show 、 hide
    wsxyeah
    wsxyeah
    Mar 3, 2017 via iPhone
    6
    用 show/hide ,别用 replace
    michaelye1988
    michaelye1988
    Mar 3, 2017
    7
    @jasonhui512 我知道有跳转,你误会我的意思了,其它人也提示你了,如 @hanity 和 @wsxyeah 所说的方法,不要 replace 。
    还有就是 @Bown 所说的,如果采用的是 ViewPager 和 Fragment 结合的方式,需要设置 setOffscreenPageLimit , ViewPager 中有几个 Fragment ,就需要设置为多少。它能帮你缓存住 Fragment ,不会被销毁。
    ilumer
    ilumer
    Mar 4, 2017
    8
    如果是 viewpager 的话,可以直接保存实例(fragmentpageradapter)或者设置缓存数量还有楼主的答案(fragmentstatepageradapter)
    About   ·   Help   ·   Advertise   ·   Blog   ·   API   ·   FAQ   ·   Privacy   ·   Solana   ·   2791 Online   Highest 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 38ms · UTC 14:10 · PVG 22:10 · LAX 06:10 · JFK 09:10
    ♥ Do have faith in what you're doing.