现在好多应用流行一种布局。底部几个工具栏选项,上面也有类似tab的选项。底部用RadioGroup控制fragment的切换。以上有五个fragment。
第一个fragment,代表着首页。
首页又是一个类似tab的fragment,使用viewpager切换着两个fragment。
一般根据往常的经验,如果要传入fragmentmanager,都是getActivity().getSupportFragmentManager()或者getActivity().getFragmentManager()。
但是,这样会导致一个问题:数据丢失。
在fragment切换来回时,其他单个的fragment里面的数据不会丢失,而使用了viewpager的多个fragment切换的fragment会一团漆黑。
解决办法:
用getChildFragmentManager() 替换getActivity().getSupportFragmentManager()。
总结就是:
getFragmentManager()是本级别管理者, getChildFragmentManager()是下一级别管理者.
这实际上是一个树形管理结构.
在Fragment里面嵌套Fragment 的话,不要用getActivity().getSupportFragmentManager()或者getFragmentManager()
会在ViewPager中出现。有些Fragment 不会加载的情况,既ViewPager 加载 Fragment 空白页的情况。
所以 Fragment里面嵌套Fragment 的话:一定要用getChildFragmentManager();
getFragmentManager()是所在fragment 父容器的碎片管理,
getChildFragmentManager()是在fragment 里面子容器的碎片管理。