android - 带底部导航的导航组件

标签 android android-fragments bottomnavigationview

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

val navController = indNavController(R.id.nav_host_fragment)
bottom_navigation.inflateMenu(R.menu.bottom_navigation_menu)
bottom_navigation.setupWithNavController(navController)

我面临下一个问题:

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

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

我正在尝试使用

bottom_navigation.setOnNavigationItemSelectedListener {  }

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

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

最佳答案

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

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

bottom_navigation.setupWithNavController(navController)

正在使用

bottom_navigation.setOnNavigationItemSelectedListener {  }

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

Set a listener that will be notified when a bottom navigation item is selected. This listener * will also be notified when the currently selected item is reselected, unless an {@link * OnNavigationItemReselectedListener} has also been set.

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

bottom_navigation.setOnNavigationItemReselectedListener { }

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

关于android - 带底部导航的导航组件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/56618583/

相关文章:

android - BottomNavigationView 后退按钮行为应该像 Youtube 应用程序一样工作但崩溃

安卓调试 : Frame is not available

android - 如何卸载旧版本的android sdk构建工具?

android - 我如何获得 Activity 而不是 FragmentActivty?

java - datepicker android - 构建错误

android - 底部导航 View 在默认 fragment Android Studio 中不可见

android - 使用底部导航和导航组件在按钮单击上切换选项卡

java - 如何为没有套接字的应用程序接收和传输数据的 Android 应用程序创建服务器?

android - Gradle with java 8 for retrolambda - Android 找不到注释 TargetApi

java - Parcelable:在 fragment 旋转时解码错误时未找到类