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