Search code examples
androidandroid-architecture-navigation

Navigation Architecture Component - Activities


I've been following the docs from Navigation Architecture Component to understand how this new navigation system works.

To go/back from one screen to another you need a component which implements NavHost interface.

The NavHost is an empty view whereupon destinations are swapped in and out as a user navigates through your app.

But, it seems that currently only Fragments implement NavHost

The Navigation Architecture Component’s default NavHost implementation is NavHostFragment.

So, my questions are:

  • Even if I have a very simple screen which can be implemented with an Activity, in order to work with this new navigation system, a Fragment needs to be hosted containing the actual view?

  • Will Activity implement NavHost interface in a near future?

--UPDATED--

Based on ianhanniballake's answer, I understand that every activity contains its own navigation graph. But if I want to go from one activity to another using the nav component (replacing "old" startActivity call), I can use activity destinations. What is activity destinations is not clear to me because the docs for migration don't go into any detail:

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

  • Is there any benefit on using ActivityNavigator instead of startActivity?
  • What is the proper way to go from activities when using the nav component?

Solution

  • I managed to navigate from one activity to another without hosting a Fragment by using ActivityNavigator.

    ActivityNavigator(this)
                        .createDestination()
                        .setIntent(Intent(this, SecondActivity::class.java))
                        .navigate(null, null)