Android 使用导航组件通过应用程序栏/工具栏打开片段
我实现了一个底部导航视图,它还使用架构组件示例中给出的Google自己的解决方案,使用 我无法直接导航到设置,因为当前架构有多个导航图,因此它说Android 使用导航组件通过应用程序栏/工具栏打开片段,android,kotlin,android-architecture-components,android-navigation,Android,Kotlin,Android Architecture Components,Android Navigation,我实现了一个底部导航视图,它还使用架构组件示例中给出的Google自己的解决方案,使用 我无法直接导航到设置,因为当前架构有多个导航图,因此它说 java.lang.IllegalArgumentException: Navigation action/destination com.istemanipal.lumos:id/themeFragment cannot be found from the current destination Destination(com.istemanipal
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
}
这是行不通的。它抛出了一个非法的argumentexception。它表示:无法从当前目标(com.istemanipal.lumos:id/settingsFragment)中找到导航操作/destination com.istemanipal.lumos:id/blogframent。这很有意义,因为存在多个导航图。是否使用要用于导航功能的id将目标片段添加到res/navigation/{navigation graph}.xml中?是的。为此,我定义了一个单独的导航图。那失败了。唯一的方法是在应用程序的每个屏幕的导航图中手动添加此目的地,并定义操作。正如您可能想象的那样,这不是一个好的解决方案。您是否在当前导航图中包含了设置
片段
?您不能使用控制器移动到不属于导航图一部分的片段,这就是您获得异常的原因。但是,您可以使用supportFragmentManager
直接加载片段,而不会影响控制器。supportFragmentManager是否允许向其注入?还是我遗漏了什么?
java.lang.IllegalArgumentException: Navigation action/destination com.istemanipal.lumos:id/themeFragment cannot be found from the current destination Destination(com.istemanipal.lumos:id/blogFragment
override fun onOptionsItemSelected(item: MenuItem): Boolean {
when (item.itemId) {
R.id.settings -> currentNavController.navigate(R.id.navigation_destination_id)
}
return true
}