在Fragment中嵌套ViewPager时,内部Fragment不显示且滑动不流畅

遇到的问题

我在开发过程中用到了ViewPager和Fragment配合使用的情况,在ViewPager下的一个Fragment里又有情况需要用到ViewPager+Fragment,出现了ViewPager的嵌套,这时里层ViewPager的滑动显得十分不流畅,而且里层Fragment的内容不显示出来。

原因

我的里层ViewPager获取Fragment Manager的代码如下:

MyFragmentStatePagerAdapter adapter = new MyFragmentStatePagerAdapter(getActivity().getSupportFragmentManager(), fragments, Arrays.asList(TITLES));

这里的getActivity().getSupportFragmentManager()方法获取到的是父级的FragmentManager,于是出现了里层ViewPager与外层共用一个FragmentManager的情况,导致问题出现。

解决办法

修改适配器获取FragmentManager的方法:

MyFragmentStatePagerAdapter adapter = new MyFragmentStatePagerAdapter(getChildFragmentManager(), fragments, Arrays.asList(TITLES));

使用getChildFragmentManager()代替getActivity().getSupportFragmentManager()方法。