Android开发中,Fragment嵌套Fragments遇到的问题

Fragment,简称碎片,是Android 3.0(API11)提出的,为了兼容低版本,support-v4库中也开发了一套Fragment API,最低兼容Android 1.6。

  • Fragment是依赖于Activity的,不能独立存在的。
  • 一个Activity里可以有多个Fragment。
  • 一个Fragment可以被多个Activity重用。
  • Fragment有自己的生命周期,并能接收输入事件。
  • 我们能在Activity运行时动态地添加或删除Fragment。

工作过程中,Fragment的使用也大大提高了我们的效率,通过Activity嵌套多个Fragment可以很容易的实现大多数app主界面的搭建。通常的做法都是通过getSupportFragmentManager()来获取Fragment的管理者对象FragmentManager来进行Fragment的添加和移除的一些操作。
Android开发中,Fragment嵌套Fragments遇到的问题
但有时候也会有一些特殊的需求,比如上图中所示:主界面由Activity嵌套Fragment搭建,在子Fragment中又嵌套了两个子Fragment。这就需要我们做一些特殊的处理了。当然你可以使用getSupportFragmentManager()来继续管理子Fragment里的Fragment碎片,但是会出现页面冲突的现象,这种是显然不允许的。这时候就要引入getChildFragmentManager()对象了,顾名思义就是子级管理者对象。使用getChildFragmentManager()来管理Fragment才能达到我们想要的效果。这是因为第一级的Fragment嵌套在宿主ActivitygetFragmentManager()返回的是Activity的管理者对象,在Fragment中再嵌套FragmentgetFragmentManager()返回的是把自己加进来的管理者对象,也就是Activity的管理者对象,这显然是不对的。它需要的是本级的管理者对象,这就需要使用getChildFragmentManager()来进行管理了。
希望可以帮到你们。