android-fragments 导航组件如何使每个片段始终只有一个示例

cqoc49vn  于 2022-11-13  发布在  Android
关注(0)|答案(1)|浏览(158)

我的项目

  • Kotlin中碎片的单一活性模式。
  • Navigation component + bottom navigation view组合在一起。
  • 底部导航视图中有四个选项卡(片段)。

我的问题是改变底部导航中的每个选项卡,然后重新创建每个片段,这是由于应用程序滞后。
所以我的目标是每个片段只生成一个示例
我尝试的是:
1.为grap.xml中的选项卡片段添加app:launchSingleTop="true"不起作用。
1.这个想法是,如果标签片段可以弹出备份,然后直接使用它或创建新的。但这只是有时工作。有时标签片段不重新创建,但有时是!
我认为原因是弹出回栈清除它一段时间?不确定。

binding.bottomNavigationView.setOnItemSelectedListener { item: MenuItem ->

      if (!navController.popBackStack(item.itemId, false)) {
          NavigationUI.onNavDestinationSelected(item , navController)

      }
      true
  }

1.我用navController.navigate(item.itemId, null, NavOptions.Builder().setPopUpTo(item.itemId, false).build())替换了NavigationUI.onNavDestinationSelected(item , navController),仍然不起作用。
知道吗?谢谢!

jaql4c8m

jaql4c8m1#

只需添加这段代码以避免重复

binding.bottomNavigationView.setOnItemReselectedListener { }

相关问题