ViewPager TabLayout 问题:选项卡片段内容仅在滑动到最后一个选项卡后出现

ViewPager TabLayout issue: tab fragment content only appears after last tab has been swiped to

我有一个 ViewPager,我正在向其中动态添加 3 个选项卡片段:

 private void addTabs(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new QuotesFragment(), "Quotes");
    adapter.addFragment(new BooksFragment(), "Books");
    adapter.addFragment(new ExercisesFragment(), "Exercises");
    viewPager.setAdapter(adapter);
}

这是未按预期工作的片段代码:

@Override
public void onViewCreated(View view, Bundle savedInstanceState) {

    recyclerView = (RecyclerView) getActivity().findViewById(R.id.quotes_recycler);
    layoutManager = new StaggeredGridLayoutManager(2, StaggeredGridLayoutManager.VERTICAL);
    recyclerView.setLayoutManager(layoutManager);
    MasonryAdapter adapter = new MasonryAdapter(context, quotesList);
    recyclerView.setAdapter(adapter);
}

RecyclerView 视图持有者表单 QuotesFragment() 不会出现在父 Activity 的开始处。它们仅在我滚动到最后一个选项卡(在本例中为 ExercisesFragment())并返回到第一个选项卡时才会显示。检查 Hierarchy Viewer 似乎在应用程序启动时 RecyclerView 已初始化(容器在屏幕上需要 space),但它的子项不是。

奇怪的是,当我像这样更改添加选项卡的顺序时(请注意我有问题的选项卡现在位于中间):

private void addTabs(ViewPager viewPager) {
    ViewPagerAdapter adapter = new ViewPagerAdapter(getSupportFragmentManager());
    adapter.addFragment(new ExercisesFragment(), "Exercises");
    adapter.addFragment(new QuotesFragment(), "Quotes");
    adapter.addFragment(new BookFragment(), "Books");
    viewPager.setAdapter(adapter);
}

它永远不会加载!我已经尝试了各种方法,甚至有一个 question 关于完全相同的问题,但它对我的情况没有帮助。它可能与 Fragment/ViewPager 生命周期或隐式方法有关吗?

感谢任何帮助。

我终于让它工作了,它真的很简单。我正在调用我的方法,该方法从 JSON 加载 Fragment 的 onCreate() 中的引号而不是 onViewCreated()。当我将它移动到 onViewCreated() 时(在设置适配器和布局管理器之后)它开始工作了。