我有一个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);
}
"回收器视图视图持有者"窗体QuotesFragment()
不会在父活动开始时显示。它们仅在我滚动到最后一个选项卡(在这种情况下ExercisesFragment()
(并返回到第一个选项卡时才会显示。在层次结构查看器中签入似乎在应用程序启动时初始化了 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);
}
它永远不会加载!我尝试了各种方法,甚至有一个关于完全相同的问题的问题,但这对我的情况没有帮助。它是否与片段/ViewPager 生命周期或隐式方法有关?
任何帮助表示赞赏。
我终于让它工作了,它真的很简单。我调用的方法在 Fragment 的onCreate()
中加载来自 JSON 的引用,而不是onViewCreated()
。当我将其移动到onViewCreated()
(设置适配器和布局管理器后(时,它开始工作。