Cómo crear un controlador de navegación

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 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 proporciona algunas formas diferentes de navegar a los destinos en su gráfico. Para obtener más información, consulta Cómo navegar a un destino.

Redactar

Para crear un NavController cuando usas Jetpack Compose, llama a rememberNavController():

val navController = rememberNavController()

Debes crear el elemento NavController de alto en tu jerarquía componible. Debe ser lo suficientemente alta como para que todos los elementos componibles que necesiten hacer referencia a él puedan hacerlo.

Si lo haces, podrás usar NavController como la única fuente de confianza para actualizar elementos componibles fuera de tus pantallas. Esto sigue los principios de la elevación de estado.

Vistas

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:

Por lo general, primero obtienes un NavHostFragment y, luego, recuperas el 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

  • Diseña tu gráfico de navegación: Es 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: Es una guía en la que se detalla cómo usar NavController para moverte entre destinos en tu gráfico de navegación.