嵌套 Tab 时部分 Fragment 不显示及指示器 Indicator 卡顿问题

在用“ 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

猜你喜欢

转载自blog.csdn.net/zeqiao/article/details/78845791