Search code examples
androidandroid-architecture-componentsandroid-architecture-navigation

Android Navigation library deep linking: How to synthesise backstack


Using Android Architecture's Navigation component, I have the following navigation graph

-> [Home] -> [Articles List] -> [Specific Article]

I also have a deeplink to [Specific Article]. When it is opened, navigating up currently goes to [Home].

I'd like to synthesise a backstack such that navigating up instead goes back to [Articles List] (and then on to [Home] if navigating again).

What is the Navigation way of doing this?


Solution

  • Per the NavDeepLinkBuilder documentation, Navigation uses the startDestination of the destination for the synthetic back stack. If you Group destinations into a nested navigation graph, both the startDestination of the nested graph and the startDestination of the root graph are added to the back stack. This gives you the ability to have [Articles List] as the startDestination of the nested graph to add it to your back stack.

    However, it is strongly recommended to keep your synthetic back stack as small as possible - while a depth of 2 or 3 (as here) is fine, it is not recommended to go much beyond that level to avoid cases where users have to repeatedly tap and tap the back button to get back to the launcher.