如何解决使用导航组件通过 App Bar/Toolbar 打开 Fragments
我实现了一个底部导航视图,该视图还使用架构组件示例中给出的 Google 自己的解决方法处理多个后台堆栈,使用 file
private fun setupBottomNavigationBar() {
val navGraphIds = listOf(
R.navigation.blog,R.navigation.events,R.navigation.practice,R.navigation.login
)
val bottomNavigationView = findViewById<BottomNavigationView>(R.id.bottom_nav)
val controller = bottomNavigationView.setupWithNavController(
navGraphIds = navGraphIds,fragmentManager = supportFragmentManager,containerId = R.id.fragment,intent = intent
)
//use this to setup Action bar
controller.observe(this) { navController ->
setupActionBarWithNavController(navController)
}
currentNavController = controller
}
这就是我设置底部导航视图的方式。我有一个应用栏应该打开设置片段,但到目前为止我一直无法这样做。任何解决方案?这就是选择选项的样子
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.settings -> TODO()//->should open settings fragment
}
return true
}
我无法直接导航到设置,因为当前架构有多个导航图,因此它说,
java.lang.IllegalArgumentException: Navigation action/destination com.istemanipal.lumos:id/themeFragment cannot be found from the current destination Destination(com.istemanipal.lumos:id/blogFragment
解决方法
如果菜单项的 id 设置为片段 id,你可能可以使用导航控制器来切换目的地。
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.settings -> currentNavController.navigate(R.id.navigation_destination_id)
}
return true
}
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。