Issue
Here is the code for app_nav_graph.xml with a nested nav graph:
<navigation
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/app_nav_graph"
app:startDestination="@id/homeFragment">
<include app:graph="@navigation/nested_nav_graph" />
<fragment
android:id="@+id/homeFragment"
android:name="com.sd.android.ui.HomeFragment">
<action
android:id="@+id/action_homeFragment_to_nestedNavGraph"
app:destination="@id/nested_nav_graph" />
</fragment>
</navigation>
Here is nested_nav_graph.xml:
<navigation
xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
android:id="@+id/nested_nav_graph"
app:startDestination="@id/nestedHomeFragment">
<fragment
android:id="@+id/nestedHomeFragment"
android:name="com.sd.android.ui.NestedHomeFragment">
</fragment>
</navigation>
And here is the navigation code placed inside HomeActivity (hosting NavHostFragment):
navController.setGraph(R.navigation.app_nav_graph);
Bundle bundle = new Bundle();
bundle.putInt("key", 1);
navController.navigate(R.id.action_homeFragment_to_nestedNavGraph);
The issue is that NestedHomeFragment is not receiving the passed bundle i.e. getArguments() is returning null.
Why is this happening? Any suggestions to fix this?
Thanks
Solution
In your code, you are creating your Bundle, but you aren't actually passing it to your call to navigate(). You need to do that for it to actually be sent onto your destination:
Bundle bundle = new Bundle();
bundle.putInt("key", 1);
navController.navigate(R.id.action_homeFragment_to_nestedNavGraph, bundle);
Answered By - ianhanniballake
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.