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.
ActivityNavigator
instead of startActivity
? 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)