首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >底部导航组件

底部导航组件
EN

Stack Overflow用户
提问于 2019-06-16 11:53:59
回答 4查看 3.1K关注 0票数 3

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

代码语言:javascript
运行
复制
val navController = indNavController(R.id.nav_host_fragment)
bottom_navigation.inflateMenu(R.menu.bottom_navigation_menu)
bottom_navigation.setupWithNavController(navController)

我面临的下一个问题是:

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

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

我试着用

代码语言:javascript
运行
复制
bottom_navigation.setOnNavigationItemSelectedListener {  }

但是,底部导航将不能与navController一起工作。

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

EN

回答 4

Stack Overflow用户

回答已采纳

发布于 2019-06-17 08:19:40

最后,我解决了这个问题。

正如我之前说过的,这个代码:

代码语言:javascript
运行
复制
bottom_navigation.setupWithNavController(navController)

正在使用

代码语言:javascript
运行
复制
bottom_navigation.setOnNavigationItemSelectedListener {  }

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

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

因此,我所做的就是在代码中添加下一行:

代码语言:javascript
运行
复制
bottom_navigation.setOnNavigationItemReselectedListener { }

仅此而已。当项目被选中时,navController将加载片段,而不是在底部导航中重新选择项时加载片段。

票数 10
EN

Stack Overflow用户

发布于 2020-08-24 04:50:29

我更喜欢使用来自navController的侦听器

代码语言:javascript
运行
复制
navController.addOnDestinationChangedListener { 
    controller, destination, arguments -> 
        //destination.id for id fragment        
}

因此,当目标发生变化时,侦听器就会被触发--而不是通过单击bottom_navigation

因为在声明setOnNavigationItemSelectedListener时已经使用了setupWithNavController

票数 1
EN

Stack Overflow用户

发布于 2019-06-16 12:02:07

尝试这样做,以忽略用户对同一选定项的单击:

代码语言:javascript
运行
复制
bottom_navigation.apply {
        setOnNavigationItemSelectedListener {
            if (it.itemId == bottom_navigation.selectedItemId) {
                true
            } else when (it.itemId) { ... }
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/56618583

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档