最近,在项目中遇到一个问题,ViewPager+Fragment嵌套ViewPager+Fragment时,子Fragment中无法加载数据.后来再查取了相关资料后发现还有一个 getChildFragmentManager()
方法,现在将getFragmentManager()
,getChildFragmentManager()
,
getSupportFragmentManager
这三个方法区分下:
1. getFragmentManager()
3.0系统(高版本系统)以后用于获取碎片管理器FragmentManager
,这个Fragment位于android.app包下,以前为了兼容以前的低版本就需要使用getSupportFragmentManager
,那么获取到的是Activity的FragmentManager
2.getSupportFragmentManager
如果Fragment使用的是v4包下的,那么就需要使用getSupportFragmentManager
,那么获取到的也是Activity的FragmentManager
,这个是为了兼容3.0以下的系统的,不过貌似没有什么卵用
3.getChildFragmentManager()
如果是在Fragment里面,调用上边两个方法获取到的仍然是Activity的FragmentManager
,但是在Fragment里面调用getChildFragmentManager()
,获取到的就是Fragment的FragmentManager
.
结论
所以,在ViewPager+Fragment嵌套ViewPager+Fragment时,第一层是ViewPager+Fragment在Activity里边,我们就需要使用获取Activity的FragmentManager
来管理Fragment,因此需要调用getFragmentManager()
,getSupportFragmentManager
.
而在第二层ViewPager+Fragment时候,我们需要管理的是Fragment里边的Fragment,就需要使用getChildFragmentManager()
,这样第二层的Fragment才能加载数据