25

I'm learning android development and the navigation component, trying to link multiple activities as the document had written. But it seems like it's impossible to create action between two activities to a single navigation graph which was reasonable to me as the document had written.

The NavController and its navigation graph is contained within a single activity. Therefore, when migrating an existing project to use the Navigation Architecture Component, focus on migrating one Activity at a time by creating a navigation graph for the destinations within each Activity.

So the question is what does the following sentence mean? I could add multiple activities to one navigation graph but couldn't add a link(action) between them.

Separate Activities can then be linked by adding activity destinations to the navigation graph, replacing existing usages of startActivity() throughout the code base.

1
  • 1
    Theoretically, we can create multiple navigation graph files (one per feature module) which only represent the module internal navigation. The navigation between the modules themselves can happen by including the graphs of the feature module to the entry point of the parent module. Commented Dec 11, 2018 at 4:17

1 Answer 1

43

Since each NavController and navigation graph is contained within a single activity, an <activity> destination is an exit point from that graph - once you use navigate(R.id.your_activity_destination) to go to the next activity, that NavController and graph is no longer active (it is on the activity on the back stack, not the newly launched activity).

On your second Activity, you would have a second navigation graph with any additional <activity> outbound destinations to go to further activities.

7
  • 2
    had to read through 10+ guides on Medium to finally get correct answer :)
    – Oleksandr
    Commented Mar 18, 2019 at 12:25
  • @Oleksandr - it is also specifically called out in the Migrate to Navigation documentation Commented Mar 18, 2019 at 14:26
  • @ianhanniballake I have bottom navigation view and app bar on products listing page, but no bottom navigation view on detail page. How can i achieve that with architecture component. As, whatever fragment i attach to nav graph, it shows bottom navigation view Commented Apr 19, 2019 at 14:16
  • @ianhanniballake If I navigate to an activity (Activity B), it changes the Activity A for the Activity B. But if I move from graph A (Activity A) to graph B (Activity B), navigation component decides to use Activity A as host for fragments in graph B, even when in graph B it is appearing Activity B as host. Is it a bug or it is intentionally? Commented Jul 24, 2019 at 18:11
  • 1
    @JavierSegoviaCordoba - Sounds like you should post your own question with more details on your navigation graph, but if you have two nested graphs and are navigating between them, then that takes place all within one host (and hence, one activity). Commented Jul 24, 2019 at 22:29

Not the answer you're looking for? Browse other questions tagged or ask your own question.