Publicado en Android

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.

Preparativos

Añadir al build.gradle del proyecto en dependencies

dependencies {
    classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0-rc01"
}

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

apply plugin: 'androidx.navigation.safeargs'

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