Estoy usando el componente Android Jetpack Navigation y parece que requiere que pase los argumentos en el orden incorrecto.
Tengo dos fragmentos (fragment1 y fragment2). El fragmento 2 toma cuatro argumentos (bool, string, int, CustomParslableClass?). El IDE cree que ese es el orden correcto (y muestra los garabatos rojos con un mensaje "No coincide el tipo [...]" si no los tengo en ese orden). La aplicación solía compilarse bien con ese orden (hace un año, cuando trabajé por última vez en ella), pero hoy descargué todo y tuve que actualizar las dependencias para compilar.
Esta es la línea de código normal que el IDE cree que es correcta (solía funcionar):
val direction = HomeViewPagerFragmentDirections.actionFragment1ToFragment2(false, "Favorites", 17, null)Sin embargo, cuando construyo con ese orden, obtengo errores de compilación para cada argumento:
e: filename.kt: (51, 106): The boolean literal does not conform to the expected type String e: filename.kt: (51, 112): Type mismatch: inferred type is String but Int was expected e: filename.kt: (51, 125): Type mismatch: inferred type is Int but PlaylistEntry? was expected e: filename.kt: (51, 136): Null can not be a value of a non-null type BooleanPor el contrario, cuando reordeno los argumentos de la función así (arg2, arg3, arg4, arg1):
val direction = HomeViewPagerFragmentDirections.actionFragment1ToFragment2("Favorites", 17, null, false) funciona bien, pero el IDE muestra subrayados rojos debajo de cada argumento, ¡lo que indica que están en el orden incorrecto! ( Type mismatch. Required: Boolean, Found: String )
Tal vez importante:
Cuando cambio arg2 para que tenga un valor predeterminado, el IDE espera lo mismo, pero el orden que funciona para la compilación cambia a (arg3, arg4, arg1, arg2) .
Una simple limpieza y reconstrucción no ayudó. También intenté limpiar el proyecto, cerrar Android Studio y reiniciar, luego hacer una compilación. Incluso intenté eliminar la acción entre los dos fragmentos y volver a crear (construir entre tiempos). Todo fue en vano. Tenga en cuenta que cuando ejecuto la aplicación compilada, todo funciona como debería. Normalmente, eso estaría bien, ¡pero no creo que se suponga que el orden de los argumentos esté saltando de esa manera!
Con argumentos múltiples, debe configurar como a continuación
val action = BlankFragmentDirections.actionBlankFragmentToSecondFragment() action.arg1 = 2 action.arg2 = 3 action.arg3 = "423" findNavController().navigate(action)