VIewPager本身就可以实现界面的滑动效果,为什么还要结合Fragment一起使用呢?(或许是因为结合Fragment一起使用可以更方便的管理每一个界面,对每个界面可以单独处理,而不必要把所有代码都写到一个文件里吧。)究其原因,我也说不明白,但是怎么实现还是要学会的。
ViewPager加Fragment的实现无非就是把原先加载的Views换成了Fragments。其流程和单独使用ViewPager差不多(数据源,适配器,绑定)。其中的差别可能就是在使用Fragment作为页面显示时,适配器类要使用FragmentPagerAdapter。那么,就有必要先学习一下FragmentPagerAdapter的相关API。
FragmentPagerAdapter类的主要介绍如下所示:
FragmentPagerAdapter extends PagerAdapter
它是一个公有抽象类,继承自PagerAdapter。
java.lang.Object
↳ android.support.v4.view.PagerAdapter
↳ android.support.v13.app.FragmentPagerAdapter
Class Overview
类的概述:
Implementation of PagerAdapter that represents each page as a Fragment that is persistently kept in the fragment manager as long as the user can return to the page.
This version of the pager is best for use when there are a handful of typically more static fragments to be paged through, such as a set of tabs. The fragment of each page the user visits will be kept in memory, though its view hierarchy may be destroyed when not visible. This can result in using a significant amount of memory since fragment instances can hold on to an arbitrary amount of state. For larger sets of pages, consider FragmentStatePagerAdapter.
大意为:
FragmentPagerAdapter是PagerAdapter类的一种实现,它表示ViewPager的每一页都是一个Fragment,并且只要用户可以返回到页面中,Fragment就会一直保存在碎片管理器(fragment manager)中。
这种类型的页面最好用于少量静态Fragment的显示,比如一系列选项卡(tabs)。此外,虽然当页面不可见时,fragment的试图层次结构( view hierarchy)就可能被销毁,但是用户访问的每一个页面对应的Fragment都将被保存在内存中。这可能导致大量内存的占用,因为fragment实例可能保持任意数量的状态。所以,对于大量页面的显示,推荐使用FragmentStatePagerAdapter。