Android addAll()以添加嵌套的导航图,该导航图在程序上不起作用

Android addAll()以添加嵌套的导航图,该导航图在程序上不起作用,android,android-jetpack,android-jetpack-navigation,Android,Android Jetpack,Android Jetpack Navigation,我想在两个构建变量中有两个版本的nav_图,第一个变量将使用mainnav_图,第二个变量将向主nav_图添加更多的目的地,因此这使得第二个图与主nav_图重复,但目的地更多这很难同时管理和保持更新,所以为了解决这个问题,我通过代码创建一个导航图来进行动态导航,这很好,但是当我想为第二个构建变量目标添加一个嵌套图到MainGraph时,它不起作用 此文件位于主代码库中 MainGraph object MainGraph{ var id_counter = 1 private

我想在两个构建变量中有两个版本的
nav_图
,第一个变量将使用
main
nav_图
,第二个变量将向主
nav_图
添加更多的目的地,因此这使得第二个图与主
nav_图
重复,但目的地更多这很难同时管理和保持更新,所以为了解决这个问题,我通过代码创建一个导航图来进行动态导航,这很好,但是当我想为第二个构建变量目标添加一个嵌套图到
MainGraph
时,它不起作用

此文件位于主代码库中

MainGraph

object MainGraph{

    var id_counter = 1

    private val id = id_counter++

    object Destinations {
        val mainFragment = id_counter++
        // ...
    }

    object Actions {
        // ...
        val to_settingsFragment = id_counter++
    }

    fun setGraph(context: Context, navController: NavController) {

        navController.graph = navController.createGraph(id, Destinations.mainFragment) {

            fragment<MainFragment>(Destinations.mainFragment) {
                label = context.getString(R.string.app_name)

                // ...

                action(Actions.to_settingsFragment) {
                    destinationId = Destinations.settingsFragment
                }
            }

            // ...

            fragment<SettingsFragment>(Destinations.settingsFragment) {
                label = context.getString(R.string.settings)
            }
        }
    }
}
object NestedGraph {

    val id = MainGraph.id_counter++

    object Destinations {
        val nestedFirstFragment = MainGraph.id_counter++
        val nestedSecondFragment = MainGraph.id_counter++
    }

    object Actions {
        val to_nestedSecondFragment = MainGraph.id_counter++
    }

    fun addDestinations(navController: NavController) {

        val navGraph = navController.createGraph(
            this@NestedGraph.id,
            Destinations.nestedFirstFragment
        ) {

            fragment<NestedFirstFragment>(Destinations.nestedFirstFragment) {
                action(Actions.to_nestedSecondFragment) {
                    destinationId = Destinations.nestedSecondFragment 
                }
            }

            fragment<NestedSecondFragment>(Destinations.nestedSecondFragment)
        }

        navController.graph.addAll(navGraph) // not working
    }
}
objectmaingraph{
变量id_计数器=1
私有值id=id\u计数器++
对象目的地{
val mainFragment=id\u计数器++
// ...
}
对象操作{
// ...
val to_设置分段=id_计数器++
}
趣味设置图(上下文:上下文,导航控制器:导航控制器){
navController.graph=navController.createGraph(id,Destinations.mainFragment){
片段(Destinations.mainFragment){
label=context.getString(R.string.app_name)
// ...
动作(动作到设置片段){
destinationId=Destinations.settingsFragment
}
}
// ...
片段(Destinations.settingsFragment){
label=context.getString(R.string.settings)
}
}
}
}
此文件仅在第二个生成变量中存在

NestedGraph

object MainGraph{

    var id_counter = 1

    private val id = id_counter++

    object Destinations {
        val mainFragment = id_counter++
        // ...
    }

    object Actions {
        // ...
        val to_settingsFragment = id_counter++
    }

    fun setGraph(context: Context, navController: NavController) {

        navController.graph = navController.createGraph(id, Destinations.mainFragment) {

            fragment<MainFragment>(Destinations.mainFragment) {
                label = context.getString(R.string.app_name)

                // ...

                action(Actions.to_settingsFragment) {
                    destinationId = Destinations.settingsFragment
                }
            }

            // ...

            fragment<SettingsFragment>(Destinations.settingsFragment) {
                label = context.getString(R.string.settings)
            }
        }
    }
}
object NestedGraph {

    val id = MainGraph.id_counter++

    object Destinations {
        val nestedFirstFragment = MainGraph.id_counter++
        val nestedSecondFragment = MainGraph.id_counter++
    }

    object Actions {
        val to_nestedSecondFragment = MainGraph.id_counter++
    }

    fun addDestinations(navController: NavController) {

        val navGraph = navController.createGraph(
            this@NestedGraph.id,
            Destinations.nestedFirstFragment
        ) {

            fragment<NestedFirstFragment>(Destinations.nestedFirstFragment) {
                action(Actions.to_nestedSecondFragment) {
                    destinationId = Destinations.nestedSecondFragment 
                }
            }

            fragment<NestedSecondFragment>(Destinations.nestedSecondFragment)
        }

        navController.graph.addAll(navGraph) // not working
    }
}
对象嵌套图{
val id=MainGraph.id\u计数器++
对象目的地{
val nestedFirstFragment=MainGraph.id\u计数器++
val nestedSecondFragment=MainGraph.id\u计数器++
}
对象操作{
val to_nestedSecondFragment=MainGraph.id_计数器++
}
目的地(导航控制器:导航控制器){
val navGraph=navController.createGraph(
this@NestedGraph.id,
Destinations.nestedFirstFragment
) {
片段(Destinations.nestedFirstFragment){
action(Actions.to_nestedSecondFragment){
destinationId=Destinations.nestedSecondFragment
}
}
片段(Destinations.nestedSecondFragment)
}
navController.graph.addAll(navGraph)//不工作
}
}

经过一些调试并尝试n失败后,我发现NavGraph.addAll()没有错误方法它的工作发现这只是我的错误,我在调用
导航时使用了嵌套的图形id而不是目标id,如果将来有人也会出现这种行为,请确保
id
变量是私有的