笔记61--FragmentPagerAdapter

贴连接:http://blog.csdn.net/kaiwii/article/details/7823613、http://www.apkbus.com/android-123455-1-1.html

一、是什么

FragmentPagerAdapter是PagerAdapter的一种实现。

二、特点

他将每个页面表示为一个Fragment,并且每个Fragment都将会保存到fragment manager当中。而且,当用户不可能再次回到页面的时候,fragment manager才会将这个fragment销毁。

这种pager十分适用于有一些静态fragment,例如一组tabs的时候使用。每个页面对应的Fragment当用户可以访问的时候会一直存在内存中,但是,当这个页面不可见的时候,view hierarchy将会被销毁。这样子会导致应用程序占有太多资源。当页面数量较大时,建议使用FragmentStatePagerAdapter。

三、怎么用

当使用FragmentPagerAdapter时,ViewPager一定要使用正确的ID set。

只需实现getItem(int)和getCount()两个方法。需要理解destItem()并不是去destroy Fragment对象,而是destroy Fragment的视图。

由于创建好了的Fragment会一直在内存中,不会被销毁,但它的视图层次是会被销毁的,所以onCreate()方法只会被调用一次,而onCreateView()方法,每次Fragment从不可见到可见时会被调用,可以看到Fragment有一些生命周期回调方法onPause()、onDestroy()等等。

四、与PagerAdapter区别

PagerAdapter:

1)PagerAdapter生成一个页面视图,决定了ViewPager全部几页,PagerAdapter负责每页的初始化、销毁等工作。

FragmentAdapter:

Fragment本身提供的一些特性让我们方便的对每页进行管理,使用FragmentManager可以根据ID或TAG来查找Fragment,动态添加、删除、提供,Fragment可以管理自己的生命周期,像Activity一样提供了一些生命周期回调方法。

让Fragment成为ViewPager的一页时,FragmentManager会一直保存管理创建好了的Fragment,即使当前不是显示的这一页,Fragment对象也不会被销毁,在后台默默等待重新显示。但如果Fragment不再可见时,它的视图层次会被销毁掉,下次显示时视图会重新创建。

当使用FragmentPagerAdapter时,一定要为它的宿主ViewPager设置一个有效的ID。

2)FragmentStatePageAdapter:

由于使用FragmentPageAdapter时,Fragment对象会一直保留在内存中,所以有大量的显示页时,就不适用FragmentPageAdapter。大量选项页时,可使用FragmentStatePageAdapter。

3)FragmentStatePageAdapter特点:如果Fragment不显示,那么Fragment对象和视图都会被销毁,但在回调onDestroy()之前会回调onSaveInstanceState(Bundle outState)来保存Fragment的状态,下次Fragment显示时通过onCreate(Bundle savedInstanceState)把存储的状态值取出来。


  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值