FragmentPagerAdapter 和
FragmentStatePagerAdapter 内部都封装有
FragmentManager和
FragmentTransaction,用于管理Fragment;
使用Fragment 来表示一页,显得更加简单和直观,Fragment 本身提供的一些特性可以让我们方便的对每一页进行管理,使用FragmentManager可以根据ID或TAG来查找Fragment , 动态添加、删除、替换,Fragment 可以管理自己的生命周期,像Activity一样提供了一些生命周期回调方法
让Fragment 成为ViewPager的一页时,FragmentManager会一直保存管理创建好了的Fragment,即使当前不是显示的这一页,Fragment对象也不会被销毁,在后台默默等待重新显示。但如果Fragment不再可见时,它的视图层次会被销毁掉,下次显示时视图会重新创建
首先来分析一下
FragmentPagerAdapter:
@Override
public Object instantiateItem(ViewGroup container, int position) {
if (mCurTransaction == null) {
mCurTransaction = mFragmentManager.beginTransaction();
}
final long itemId = getItemId(position);
// Do we already have this fragment?