Usando el plugin Safe args para gestionar argumentos


Google con la presentación del componente de Navegación que forma parte del Android Jetpack (AndroidX), saco un plugin Gradle para gestionar los argumentos en las actividades, fragmentos de forma segura.

Implementación mediante plugin SafeArgs

Si se usa el nuevo sistema de dependencia, si tenemos settings.gradle, podemos añadir SafeArg como plugin directamente, nos situamos a build.gradle a nivel de aplicación

plugins {
    id 'com.android.application'
    id 'org.jetbrains.kotlin.android'
    id 'androidx.navigation.safeargs' version '2.5.0-alpha02' apply false
}

Usando dependencias

Añadir al build.gradle del proyecto en dependencies

dependencies {
    classpath("androidx.navigation:navigation-safe-args-gradle-plugin:2.5.0-rc01")
}

para usar el complemento en el archivo app.gradle de nivel de módulo

plugins {
    id 'androidx.navigation.safeargs.kotlin'
}

Definir argumentos

En la ventana de diseño de navegación del controlller en la parte derecha hay las pestaña argumentos, allí se puede ir añadiendo los argumentos que permite la actividad, fragmento o dialogo

También se puede realizar de forma manual editando el navigation/navigation_main.xml

<fragment ...>
<argument
    android:name="title"
    android:defaultValue="null"
    app:argType="string" />
</fragment>

Enviar argumentos

Para enviar los argumentos se realiza parecido a lo que haciamos con Intent, se deben cargar los datos y asignar el argumento portador

val actionDetail = HomeFragmentDirections.ActionDetail()
actionDetail.setTitle(item)
Navigation.findNavController(view).navigate(actionDetail)

Recibir argumentos

Para recibir los argumentos usando el Navigation controller y usando el plugin Safe Args se debe crear una variable global para la gestión de argumentos

private val safeArgs: DetailFragmentArgs by this.navArgs()

Luego podemos usar con seguridad la lectura de datos

val title = safeArgs.title

Enlaces

Más información en Safe Args – Gradle Plugin

Publicado por Codelaby

Mobile DevDesigner

Deja una respuesta

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Salir /  Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Salir /  Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Salir /  Cambiar )

Conectando a %s

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.

A %d blogueros les gusta esto: