Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/kotlin/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 使用导航组件通过应用程序栏/工具栏打开片段_Android_Kotlin_Android Architecture Components_Android Navigation - Fatal编程技术网

Android 使用导航组件通过应用程序栏/工具栏打开片段

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

我实现了一个底部导航视图,它还使用架构组件示例中给出的Google自己的解决方案,使用

我无法直接导航到设置,因为当前架构有多个导航图,因此它说

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
    }