在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()方法。