jasonhui512
V2EX  ›  Android

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

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