笔记61--FragmentPagerAdapter

来源:互联网 发布:erp仓库管理系统 php 编辑:程序博客网 时间:2024/06/06 03:58

贴连接: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 0
原创粉丝点击