TabLayout 片段问题

TabLayout Fragment Issue

Current layout

以上是我正在处理的 Android 应用程序中的应用程序布局。有一个activity,它有一个BottomNavigationView。使用以下方式管理导航:

this.getSupportFragmentManager().beginTransaction().replace(R.id.content, fragment).commit();

现在,在这个片段上,我有一个 TabLayout 和一个 ViewPager,如图所示。 ViewPager 侦听 TabLayout 选择器,可以通过滑动 ViewPager 或单击选项卡来更改它。工作正常..

选择一个选项卡后,我将加载另一个带有 RecyclerView 的 Fragment。 RecyclerView 中的内容来自 URL,因此它在 Post() 上更新如下:

CompletableFuture.runAsync(this::prepare);

recyclerView.post(() ->
{
   adapter.list = newList;
   adapter.notifyDataSetChanged();
   progress.setVisibility(View.INVISIBLE);
});

现在我面临的问题:

第一次单击布局图像中的菜单 1 时一切正常。回收者视图能够调用服务并加载内容。现在,如果我将导航切换到菜单 2 或任何其他菜单并尝试返回到菜单 1,则 ViewPager/TabLayout 没有任何进展。在 TabLayout 之前,我可以看到日志,之后什么也看不到。基本上将 currentItem 设置为 TabLayout 被调用,但它不调用下一个 Fragment 的创建,因此它不会再次加载 RecyclerView。 ViewPager 正在使用 FragmentStatePagerAdapter。

TabViewerAdapter extends FragmentStatePagerAdapter

适配器使用 ChildFragmentAdapter 初始化如下:

TabViewerAdapter adapter = new TabViewerAdapter(getChildFragmentManager(), 0, tabs.getTabCount());

我知道行为“​​0”已被弃用,因此尝试使用“1”以及以下内容:

TabViewerAdapter adapter = new TabViewerAdapter(getChildFragmentManager(), 1, tabs.getTabCount());

尝试了使视图无效、通知适配器和许多其他方法。没有用。

我还注意到,当我切换应用程序时(虽然它的 运行 通过点击 phone 方形按钮转到另一个应用程序)并返回(恢复)然后它再次加载回收器视图.

这意味着,我遗漏了一些东西并尝试了 onResume 方法。但是没用。

我是在做一些愚蠢的事情还是违反了设计模式或惯例?不知道该怎么办..

请帮忙,谢谢。

我通过执行以下操作解决了这个问题:

  1. 使用 SharedViewModel 处理列表
  2. ListAdapter 用于 RecyclerView

现在一切都很好。