在用“ TabLayout+ViewPager 实现双层嵌套 Tab”时遇到这个问题:
问题一:部分子Fragment不显示
问题二:指示器 Indicator 卡顿,停在半道
代码:【代码】
@Override
public View onCreateView(LayoutInflater inflater, @Nullable ViewGroup container, @Nullable Bundle savedInstanceState) {
View viewContent = inflater.inflate(R.layout.four_fragment_layout, null);
mTabLayout = (TabLayout) viewContent.findViewById(R.id.ff_tablayout);
mViewPager = (ViewPager) viewContent.findViewById(R.id.ff_viewpager);
initData();
return viewContent;
}
private void initData() {
mTabLayout.addTab(mTabLayout.newTab());
mTabLayout.addTab(mTabLayout.newTab());
mTabLayout.addTab(mTabLayout.newTab());
List<Fragment> fragments = new ArrayList<>();
fragments.add(FirstFragment.newInstance());
fragments.add(SecondFragment.newInstance());
fragments.add(ThirdFragment.newInstance());
mTabLayout.setupWithViewPager(mViewPager);
// MyFragmentAdapter adapter = new MyFragmentAdapter(getActivity().getSupportFragmentManager(), fragments, Arrays.asList(sTitle));
// MyFragmentAdapter adapter = new MyFragmentAdapter(getFragmentManager(), fragments, Arrays.asList(sTitle));
// TODO 这里要用getChildFragmentManager()才能解决嵌套tab加载fragment时部分fragment在滑动回来时不能显示的问题
MyFragmentAdapter adapter = new MyFragmentAdapter(getChildFragmentManager(), fragments, Arrays.asList(sTitle));
mViewPager.setAdapter(adapter);
}
如上所述:是因为用错了 FragmentManager,只要采用正确的 FragmentManager 即可。
参考文章:
http://blog.csdn.net/binyao02123202/article/details/51629315
http://blog.csdn.net/qq_21727627/article/details/60870529