Componentes de navegación de Android en Java | Autor: Marwa Eltayeb | Diciembre de 2021

- Configura tu entorno
Primero, agregue las siguientes dependencias a su aplicación build.gradle
Archivo para incluir soporte de navegación en su proyecto.
def nav_version = "2.3.5"// Java language implementation
implementation "androidx.navigation:navigation-fragment:$nav_version"
implementation "androidx.navigation:navigation-ui:$nav_version"
2. Crea un mapa de navegación
norteUnala vigiliación ocurre entre sus aplicaciones destino, Estos destinos pasan acción.
Una Mapa de navegación Es un archivo de recursos que contiene todos los objetivos y operaciones. El diagrama representa todas las rutas de navegación de su aplicación.
En el diagrama de navegación, tenemos dos unidades muy importantes.
- destino: Este es un fragmento o una actividad en su aplicación. Es un componente que contiene datos y una interfaz con la que los usuarios pueden interactuar.
- acción: Esta es una ruta de navegación específica que los usuarios pueden seguir para llegar a un destino determinado. Su objetivo principal es conectar dos o más destinos.
Para agregar un mapa de navegación a su proyecto:
- En la ventana del proyecto, haga clic derecho
res
Catalogar y seleccionar Nuevo> Archivo de recursos de Android. Esta Nuevo archivo de recursos Aparece el cuadro de diálogo.
2. Ingrese el nombre Nombre del archivo Campo, como «nav_graph».
3. Elija navegación Desde Tipo de recurso Lista desplegable y haga clic en Hilera.
3. Agregar NavHost a la actividad
Una Host de navegación Cuando el usuario interactúa con nuestra interfaz de usuario, actuará como un marcador de posición para el destino que se intercambiará. Necesitamos agregar NavHost al diseño principal de nuestra actividad.
3. Agrega un destino en el mapa de navegación.
Para agregar un nuevo destino usando el editor de navegación:
- En el editor de navegación, haga clic en Nuevo destino Icono y haga clic en Crear nuevo destino.
- dentro Nuevos componentes de Android El cuadro de diálogo que aparece, crea tu fragmento.
Atributos:
id
: La identificación especial del destino.name
: Indica el nombre del destino, en nuestro caso es la clase del fragmento.label
: El nombre del diseño de destino que se muestra en la barra superior de la aplicación (si existe).layout
: El archivo de diseño real utilizado para mostrar el contenido en nuestro destino.
El punto de partida del mapa de navegación es searchFragment, pero necesitamos conectarnos al destino.
app:startDestination=”@id/searchFragment”
4. Destino de la conexión
Navegar al destino es utilizar NavController
, Un objeto que gestiona la navegación de la aplicación. NavHost
Cada NavHost
Tienen sus propias contrapartes NavController
. Deberías buscar NavController
Directamente desde NavHostFragment.
// Get the navigation host fragment from this Activity
NavHostFragment navHostFragment = (NavHostFragment) getSupportFragmentManager().findFragmentById(R.id.nav_host_fragment);// Instantiate the navController using the NavHostFragment
NavController navController = navHostFragment.getNavController();// Make sure actions in the ActionBar get propagated to the NavController
setupActionBarWithNavController(this, navController);
Para conectarnos al destino usamos accións. Las operaciones se indican mediante flechas en el diagrama de navegación. Las acciones suelen conectar un destino con otro. Usamos flechas para conectarlos o agregamos el siguiente código manualmente.
- Primero, usaremos una acción para mover
search_fragment
llegarplaylist_fragment
<action
android:id="@+id/action_searchFragment_to_playlistFragment"
app:destination="@id/playlistFragment" />
Para navegar realmente al destino, aún necesita escribir código para realizar la navegación.usar NavController.navigate()
, Pase el ID de la acción, como se muestra a continuación:
navController.navigate(R.id.action_searchFragment_to_playlistFragment, bundle);
- En segundo lugar, usaremos una acción para mover
playlist_fragment
llegardownload_fragment
<action
android:id="@+id/action_playlistFragment_to_downloadFragment"
app:destination="@id/downloadFragment" />
Del mismo modo, utilice NavController.navigate()
, Pase el ID de la acción, como se muestra a continuación:
navController.navigate(R.id.action_playlistFragment_to_downloadFragment, bundle);
5. Transferir datos entre destinos
existe PlaylistFragment
, Queremos recibir las palabras clave que buscaremos del segmento anterior.Necesitamos de SearchFragment
llegar PlaylistFragment
La biblioteca de navegación nos ayuda a transferir datos entre destinos.
Tiene un complemento llamado safeArgs
Esto ayuda a transmitir datos y garantizar la seguridad de los tipos. Esto significa que no es necesario comprobar la nulabilidad de los datos.El proyecto ha sido safeArgs
.
Puedes pasar En esta sección Para aprender a configurarlo.
Para pasar los datos al destino, utilizamos
Etiqueta.
<argument
android:name="keyword"
android:defaultValue="None"
app:argType="string" />
Atributos:
name
: Este es el nombre del valor de datos que desea pasar a este objetivo.defaultValue
: Este es el valor predeterminado que se utiliza cuando no se transfieren datos.argType
: Este es el tipo de datos del parámetro pasado. Utilizo cadenas como palabras clave.
Crear paquete para pasar, puede poner String, Integer u objeto serializable
btn_search.setOnClickListener(v -> {
String keyword = searchEditText.getText().toString().trim();if(!TextUtils.isEmpty(keyword)){
Fragment fragment = new Fragment();
Bundle bundle = new Bundle();
bundle.putString(KEYWORD, keyword);
fragment.setArguments(bundle);
navController.navigate(R.id.action_searchFragment_to_playlistFragment, bundle);
}
});
En el siguiente fragmento, en onViewCreated, llame a Bundle
Bundle bundle = this.getArguments();
if (bundle != null) {
keyWord = bundle.getString(KEYWORD);
}
6. Manipule el botón de arriba
Para agregar soporte de navegación a la barra de acciones predeterminada, llame setupActionBarWithNavController()
De tu actividad principal onCreate()
método.
Entonces cubrimos onSupportNavigateUp()
Manejo de la navegación
@Override
public boolean onSupportNavigateUp() {
return navController.navigateUp() || super.onSupportNavigateUp();
}
Esta increíble biblioteca está implementada en mi aplicación. Descarga de video. mira esto. 😃
Referirse a: Documento de navegación de Android
Más artículos: haga clic en aquí