最近在项目中又遇到了ViewPager互相嵌套的问题,代码实现很简单,主要可能出现的问题是子ViewPager的fragment滑动出现白屏,这个问题的出现是FragmentManager方法调用错误,android中涉及到FragmentManager的方法主要有:getChildFragmentManager()、getFragmentManager()和getSupportFragmentManager(),下面分别介绍三种方法的区别

1.getChildFragmentManager()方法
官方文档说明如下

Return a private FragmentManager for placing and managing Fragments inside of this Fragment.

返回一个FragmentManger为了管理和设置当前Fragment内部的Fragment们,比如上文所说的,外层ViewPager(父ViewPager)中的Fragment(父Fragment)嵌套内层ViewPager(子ViewPager)+内层Fragment(子Fragment),子Fragment的FragmentManager的获取方法就需要调用getChildFragmentManager()方法。

2.getFragmentManager()方法

官方说明如下

Return the FragmentManager for interacting with fragments associatedwith this fragment's activity.

返回一个FragmentManager为了与当前Activity内部的Fragment们进行交互,因为3.0以后才有Fragment控件,所以该方法适用于3.0以后的系统,父控件为Activity的情况。

3.getSupportFragmentManager()方法

官方说明如下

Return the FragmentManager for interacting with fragments associatedwith this activity.

方法介绍和getFragmentManager()方法相同,区别是该方法位于FragmentActivity内。因为Fragment是3.0以后才出现的组件,为了这之前的系统版本也能使用Fragment,借助V4包里面的getSupportFragmentManager()方法来间接获取FragmentManager对象。

方法总结,需要管理相互独立且隶属于Activity/FragmentActivity的Fragment使用getFragmentManager()/getSupportFragmentManager(),而在Fragment中添加Fragment要使用getChildFragmetManager()来管理。

4.关于ViewPager Adapter的说明
在我们调用ViewPager的Adapter可继承的类有PagerAdapter、FragmentPagerAdapter和FragmentStatePagerAdapter,后两个都是PagerAdapter的子类。
FragmentPagerAdapter 继承自 PagerAdapter。相比通用的 PagerAdapter,该类更专注于每一页均为 Fragment 的情况。如文档所述,该类内的每一个生成的 Fragment 都将保存在内存之中,因此适用于那些相对静态的页,数量也比较少的那种;如果需要处理有很多页,并且数据动态性较大、占用内存较多的情况,应该使用FragmentStatePagerAdapter。
FragmentStatePagerAdapter 和前面的 FragmentPagerAdapter 一样,是继承子 PagerAdapter。但是,和 FragmentPagerAdapter 不一样的是,正如其类名中的 ‘State’ 所表明的含义一样,该 PagerAdapter 的实现将只保留当前页面,当页面离开视线后,就会被消除,释放其资源;而在页面需要显示时,生成新的页面(就像 ListView 的实现一样)。这么实现的好处就是当拥有大量的页面时,不必在内存中占用大量的内存。

更多相关文章

  1. android 应用如何获取系统权限 以及root系统方法
  2. Android 和 JS 交互时调用不成功解决方法
  3. android应用程序最小化的处理方法
  4. Android新线程中更新主线程UI中的View方法汇总
  5. 彻底解决Android 应用方法数不能超过65536的问题
  6. android内嵌H5页面
  7. android install faild insufficient storage错误的解决方法
  8. [Android]ListView & ViewPager & GridView 常见问题解决方法
  9. Android中数据存储的几种方法

随机推荐

  1. Android(安卓)DEX自动拆包及动态加载简介
  2. Android 测试代码编写小技巧 - UI 和 单
  3. Android(安卓)NFC源码浅析
  4. [Android Pro] Android--Sensor传感器
  5. android shape ring 画一个多层嵌套的圆
  6. Untity3D项目调用Android 图片错乱问题
  7. 【Android Developer】1.一个关于Android
  8. Unity的春天
  9. 13、从头学Android之RelativeLayout相对
  10. android资料共享