1

I have a problem in my application when using nested graph in my nave graph xml file It's my nav_graph file

    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:id="@+id/nav_graph"
    app:startDestination="@navigation/nav_entries">

    <include app:graph="@navigation/nav_entries"/>
    <include app:graph="@navigation/nav_states"/>
    <include app:graph="@navigation/nav_calendar"/>
    <include app:graph="@navigation/nav_more"/>

</navigation>

and this is fragment container view in activity_main

 <androidx.fragment.app.FragmentContainerView
        android:id="@+id/fragmentContainerView"
        android:name="androidx.navigation.fragment.NavHostFragment"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        app:defaultNavHost="true"
        app:navGraph="@navigation/nav_graph" />

And this is code from main activity to setup bottom navigation view with nave controller

 private fun setupUi() {
        val navHostFragment = supportFragmentManager.findFragmentById(R.id.fragmentContainerView) as NavHostFragment
        navController = navHostFragment.navController()
        binding.bottomNavigationView.setupWithNavController(navController)
    }

But when I run the app, It will crash and this is error :

navigation destination com.iranmobiledev.moodino:navigation/nav_entries is not a direct child of this NavGraph

Help me to fix.

2 Answers 2

1

It's incorrect. In navigation, not all nested navigation graphs should be defined with include, and a node(fragment) should be defined as the start destination. You can define other fragments in the nested navigation graph and use it with the include tag. Use this code:

app:startDestination="@id/first_fragment_id">

Instead of:

app:startDestination="@navigation/nav_entries">
Sign up to request clarification or add additional context in comments.

Comments

0

I faced the same issue.

instead of adding the graph in xml, inflate it programmatically. the issue will be resolved.

Comments

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service and acknowledge you have read our privacy policy.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.