создать NavGraph программно, который включает только другие navGraphs

Я пытаюсь программно построить navGraph и связать его с bottomNavigationView. Я должен сделать это программно, потому что я получил порядок элементов и видны ли они с сервера.

Если я создаю navGraph с помощью xml, он работает, но когда я пытаюсь построить navGraph программно, это не удается, это navGraph в xml:

          <?xml version="1.0" encoding="utf-8"?>
    <navigation xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        android:id="@+id/dummy_graph"
        app:startDestination="@+id/home_nav_graph">
        
        <include app:graph="@navigation/home_nav_graph" />
        <include app:graph="@navigation/guide_nav_graph" />
        <include app:graph="@navigation/recordings_nav_graph" />
        
    </navigation>

Если я использую этот navGraph xml, он работает, но если попытаться создать его с помощью navController.createGraph, он выйдет из строя, поскольку не может найти начальный пункт назначения:

           val navHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
      val navController = navHostFragment.navController
      navController.graph = navController.createGraph(
             startDestination = R.id.home_nav_graph
      ) {
                R.id.home_nav_graph
                R.id.guide_nav_graph
                R.id.recordings_nav_graph
      }
    
      findViewById<BottomNavigationView(R.id.bottom_navigation)
           .setupWithNavController(navController)
```
The app crashes: java.lang.IllegalArgumentException: navigation destination 2131231236 is not a direct child of this NavGraph

Is there a way to create a dynamic navGraph that includes other navGraphs inside?

0 ответов

Другие вопросы по тегам