Fragment嵌套ViewPager

1. 问题描述

主Fragment嵌套ViewPager,子Fragment在主Fragment内滑动,首次显示后,再次进入子Fragment显示空白。

2. 问题原因

1
2
3
4
5
6
7
8
9
10
11
12
13
String[] titles = new String[]{"填写问题", "问题位置"};
List<Fragment> fragments = new ArrayList<>();
fragments.add(ProblemDetailFragment.getInstance());
fragments.add(ProblemLocationFragment.getInstance());

m_ReportAdapter = new FragmentPagerAdapter(getChildFragmentManager(), fragments);
m_ReportViewPager.setAdapter(m_ReportAdapter);
m_ReportTabLayout.setupWithViewPager(m_ReportViewPager);

for (int i = 0; i < titles.length; i++)
{
m_ReportTabLayout.getTabAt(i).setText(titles[i]);
}

row5: 我们在new FragmentPagerAdapter时需要传入FragmentManager实例,一般做法都是使用getFragmentManager()方法。

getFragmentManager()接口的描述如下:

getFragmentManager

返回的是父容器的FragmentManager,而ViewPager里的Fragment显然不是直接处于父容器下。

3. 解决办法

使用getChildFragmentManager()方法。

“ Managin Fragments inside of this Fragment.

getChildFragmentManager

dark
sans