带底部导航的导航组件

Lea*_*mpo 3 android android-fragments bottomnavigationview

我正在使用导航组件和底部导航

val navController = indNavController(R.id.nav_host_fragment)
bottom_navigation.inflateMenu(R.menu.bottom_navigation_menu)
bottom_navigation.setupWithNavController(navController)
Run Code Online (Sandbox Code Playgroud)

我面临下一个问题:

当在底部导航中选择一个项目时,就会加载一个片段。当我再次按下同一个项目时,问题就出现了,然后会加载一个新的片段,这根本没有意义。

示例: 1- 用户选择菜单项 A,然后加载 FragmentA。2- 用户再次选择菜单项 A,然后将加载一个新的 FragmentA,

我试图使用

bottom_navigation.setOnNavigationItemSelectedListener {  }
Run Code Online (Sandbox Code Playgroud)

但是底部导航将无法与 navController 一起使用。

所以问题是:有一种方法可以处理这种情况,以便在用户已经在该屏幕上时再次加载新片段?

Lea*_*mpo 8

最后,我能够解决这个问题。

正如我之前所说,这段代码:

bottom_navigation.setupWithNavController(navController)
Run Code Online (Sandbox Code Playgroud)

正在使用

bottom_navigation.setOnNavigationItemSelectedListener {  }
Run Code Online (Sandbox Code Playgroud)

所以每次我选择/重新选择一个项目时,navController 都会加载一个新片段。我检查了 javadoc setOnNavigationItemSelectedListener(),它说:

设置一个在选择底部导航项时将收到通知的侦听器。除非 {@link * OnNavigationItemReselectedListener} 也已设置,否则在重新选择当前选定的项目时也会通知此侦听器 *。

所以我所做的是将下一行添加到我的代码中:

bottom_navigation.setOnNavigationItemReselectedListener { }
Run Code Online (Sandbox Code Playgroud)

就这样。navController 将在选择项目时加载片段,但不会在底部导航中重新选择项目时加载片段。