Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

123
Vistas
Argumentos de NavDirections en orden incorrecto

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 Boolean

Por 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:

  • arg1 (bool) tiene un valor predeterminado de false
  • arg2 (cadena) no tiene valor predeterminado
  • arg3 (int) no tiene valor predeterminado
  • arg4 (CustomParslableClass?) no tiene un valor predeterminado (pero es anulable)

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!

over 4 years ago · Santiago Trujillo
1 Respuestas
Responde la pregunta

0

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)
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda