繁体   English   中英

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()不会在父活动的开始出现。 仅当我滚动到最后一个选项卡(在本例中为ExercisesFragment() )并返回到第一个选项卡时,它们才会显示。 在Hierarchy Viewer中签入,似乎在应用程序启动时,RecyclerView已初始化(容器在屏幕上占用了必要的空间),但其子级没有。

奇怪的是,当我更改添加标签的顺序时(请注意,问题标签现在位于中间):

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);
}

它永远不会加载! 我曾尝试过各种东西,甚至还有一个问题,究竟同样的问题,但它并不在我的情况有所帮助。 可能与Fragment / ViewPager生命周期或隐式方法有关吗?

任何帮助表示赞赏。

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM