El controlador de navegación es uno de los conceptos clave de la navegación. Contiene el gráfico de navegación y expone los métodos que permiten que tu app se mueva entre los destinos del gráfico.
Cuando utilizas el componente Navigation, creas un controlador de navegación con la clase NavController
. NavController
es la API de navegación central. Hace un seguimiento de los destinos que visitó el usuario y le permite moverse entre los destinos. En esta guía, se muestra cómo crear un objeto NavController
en tu app.
Si deseas obtener información para agregar un gráfico de navegación a tu NavController
, consulta Cómo diseñar tu gráfico de navegación. NavController
ofrece algunas maneras diferentes de navegar a los destinos en su gráfico. Para obtener más información, consulta Cómo navegar a un destino.
Compose
Para crear un NavController
cuando usas Jetpack Compose, llama a rememberNavController()
:
val navController = rememberNavController()
Debes crear el objeto NavController
con una jerarquía componible alta. Debe ser lo suficientemente alta como para que todos los componibles que necesiten hacer referencia a este puedan hacerlo.
Si lo haces, podrás usar NavController
como la única fuente de confianza para actualizar componibles fuera de las pantallas. Esto sigue los principios de la elevación de estado.
Views
Si usas el framework de IU de Views, puedes recuperar el NavController con uno de los siguientes métodos, según el contexto:
Kotlin:
Java:
NavHostFragment.findNavController(Fragment)
Navigation.findNavController(Activity, @IdRes int viewId)
Navigation.findNavController(View)
Por lo general, primero obtienes un objeto NavHostFragment
y, luego, recuperas el elemento NavController
del fragmento. Esto se demuestra en el siguiente fragmento:
Kotlin
val navHostFragment =
supportFragmentManager.findFragmentById(R.id.nav_host_fragment) as NavHostFragment
val navController = navHostFragment.navController
Java
NavHostFragment navHostFragment =
(NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);
NavController navController = navHostFragment.getNavController();
Lecturas adicionales
- Cómo diseñar tu gráfico de navegación: Una guía en la que se detalla cómo agregar un gráfico a tu
NavController
que contiene todos los destinos de la app. - Cómo navegar a un destino: Una guía en la que se detalla cómo usar el elemento
NavController
para moverse entre destinos en tu gráfico de navegación.