Añadir en app.gradle las dependencias siguientes
//Navigation component
implementation 'androidx.navigation:navigation-fragment-ktx:2.2.0-rc02'
implementation 'androidx.navigation:navigation-ui-ktx:2.2.0-rc02'
Cadenas de texto
<string name="btn_go_start_title">Empezar</string>
<string name="btn_say_hello_title">Di Hola</string>
<string name="welcome_msg">Hola Mundo</string>
Añadir dos fragmento en blanco y en su layout poner Fragmento A, Fragmento B
Añadir nuevo recurso de tipo navigation y poner nombre como nav_graph Añadir el fragmento blanco como principal
En el layout de MainActivity.xml añadir
<androidx.fragment.app.FragmentContainerView
android:id="@+id/nav_host_fragment"
android:name="androidx.navigation.fragment.NavHostFragment"
android:layout_width="0dp"
android:layout_height="0dp"
app:layout_constraintLeft_toLeftOf="parent"
app:layout_constraintRight_toRightOf="parent"
app:layout_constraintTop_toTopOf="parent"
app:layout_constraintBottom_toBottomOf="parent"
app:defaultNavHost="true"
app:navGraph="@navigation/nav_graph" />
En MainActivity
private lateinit var navController : NavController
...
val host: NavHostFragment = supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment? ?: return
navController = host.navController
toolbar.setupWithNavController(navController)
Para navegar hacia un fragmento
navController.navigateSafe(R.id.action_fragmentA_to_fragmentB)
Otros
val appBarConfiguration = AppBarConfiguration(navController.graph)
NavigationUI.setupWithNavController(toolbar, navController, appBarConfiguration)
https://proandroiddev.com/navigation-architecture-component-for-the-rest-of-us-faafa890e5 https://www.it-swarm.net/es/android/componente-de-la-arquitectura-de-navegacion-de-android-iconos-de-cajon-de-navegacion/805766598/