美文网首页AndroidAndroid
FragmentStatePagerAdapter和Fragme

FragmentStatePagerAdapter和Fragme

作者: coolma | 来源:发表于2016-01-16 20:28 被阅读5928次

    在我们Android开发中,ViewPager是我们经常使用的一个组件,而这个组件经常和我们的Fragment结合在一起用,以此来完成滑动来显示不同的Fragment。我们要管理这里面的Fragment的切换,可以使用两种Adapter。FragmentStatePagerAdapter和FragmentPagerAdapter,那么这两种方法有什么区别呢?

    定义

    • FragmentStatePagerAdapter
      顾名思义,我们的这个FragmentStatePagerAdapter,在我们切换不同的Fragment的时候,我们会把前面的Fragment销毁,而我们系统在销毁前,会把我们的我们Fragment的Bundle在我们的onSaveInstanceState(Bundle)保存下来。等用户切换回来的时候,我们的Fragment就会根据我们的instance state恢复出来。

    • FragmentPagerAdapter
      使用这种Adapter,我们的Fragment在切换的时候,不会销毁,而只是调用事务中的detach方法,这种方法,我们只会把我们的Fragment的view销毁,而保留了以前的Fragment对象。所以通过这种方式创建的Fragment一直不会被销毁。

    怎么用?

    通过上面,我们就可以很容易得出,我们的FragmentPagerAdapter适用于Fragment比较少的情况,因为我们会把每一个Fragment保存在内存中,不用每次切换的时候,去保存现场,切换回来在重新创建,所以用户体验比较好。而对于我们的Fragment比较多的情况,我们需要切换的时候销毁以前的Fragment以释放内存,就可以使用FragmentStatePagerAdapter。

    相关文章

      网友评论

      • 戴定康:简洁明了
      • dee1ae6989b4:请教一下,如果用FragmentStateAdapter会有这样的问题:Fragment no longer exists for key f3: index 3
        怎么处理?!·
        KT_11:换成FragmentPagerAdapter
      • fulai_xy:可以

      本文标题:FragmentStatePagerAdapter和Fragme

      本文链接:https://www.haomeiwen.com/subject/gpohkttx.html