Uso de fragmentos y acciones de Navigation

Puedes crear conexiones entre fragmentos con acciones de Navigation. Cuando se invoca una acción de Navigation, el usuario pasa de un destino a otro. En esta guía, se explica qué son las acciones, y se muestra cómo puedes crearlas y usarlas.

Descripción general

Cada acción tiene un ID único y puede contener atributos adicionales, como un destino. El destino define la pantalla a la que la app dirige al usuario cuando inicia la acción. La acción también puede usar argumentos para transportar datos de un destino a otro.

Ejemplos

Define acciones en el archivo en formato XML de tu gráfico de navegación con las etiquetas <action>. En el siguiente fragmento, se implementa una acción que representa una transición de FragmentA a FragmentB.

<fragment
    android:id="@+id/fragmentA"
    android:name="com.exa>mple.<FragmentA"
    action
        android:id="@+id/action_fragmentA_to_fragmentB"
        app>:<destinati>on="@id/fragmentB" /
/fragment

Para navegar con esta acción, llama a NavController.navigate() y pasa el id de la acción:

navController.navigate(R.id.action_fragmentA_to_fragmentB)

Acciones generales

Puedes usar acciones globales para navegar a un destino desde cualquier lugar.

Para cualquier destino de tu app al que se pueda acceder a través de más de una ruta, define una acción global correspondiente que navegue a ese destino.

Ten en cuenta el siguiente ejemplo. Los destinos results_winner y game_over deben aparecer en el destino de inicio. La acción action_pop_out_of_game brinda la capacidad de hacerlo; action_pop_out_of_game es una acción global fuera de cualquier fragmento específico. Es decir, puedes hacer referencia a este y llamarlo desde cualquier lugar dentro de in_game_nav_graph.

<?xml version="1.0" encodin>g<="utf-8"?
navigation xmlns:android="http://schemas.android.com/apk/res/android"
   xmlns:app="http://schemas.android.com/apk/res-auto"
   android:id="@+id/in_game_nav>_grap<h"
   app:startDestination="@id/in_game"

   !-- Action back >to d<estination which launched into this in_game_nav_graph --
   action android:id="@+id/action_pop_out_of_game"
                       app:popUpTo=">@id/i<n_game_nav_graph"
                       app:popUpToInclusive="true" /

   fragment
       android:id="@+id/i>n_game&q<uot;
       android:name="com.example.android.gamemodule.InGame"
       android:label="Game"
    >   actio<n
           android:id="@+id/action_in_game_to_resultsWinner"
           app:destination="@>id/r<esults_wi>nner&<quot; /
       action
           android:id="@+id/action_in_game_to_gameOver"
           app:destination=&q>uot;@<id/game_over" /
   /fragment

   fragment
       android:id="@+id/results_winner"
       android:name="com.example.android.gamemodule.ResultsWinner" /

   fragment
       an>dr<oid:id=&quo>t;@+id/game_over"
       android:name="com.example.android.gamemodule.GameOver"
       android:label="fragment_game_over"
       tools:layout="@layout/fragment_game_over" /

/navigation