No se puede obtener la vista raíz desde el enlace de datos después de habilitar el complemento safe-args

15

Estoy trabajando en una aplicación de Android usando dataBinding y actualmente estoy tratando de agregar el complemento safe-args, pero después de habilitar el complemento, ya no puedo obtener la vista raíz a través de binding.root: Android Studio da el error:

Unresolved Reference
None of the following candidates is applicable because of a receiver type mismatch:
* internal val File.root: File defined in kotlin.io

¿Cómo puedo obtener enlaces de datos y argumentos seguros para jugar bien juntos?

Tenga en cuenta que mientras el fragmento de código esté en Kotlin, con gusto tomaré respuestas de Java. No es tan cómodo en Java, pero puedo leerlo y traducirlo fácilmente.

No he podido encontrar a nadie más con el mismo problema buscando en Google el mensaje de error y "argumentos seguros". Lo intenté primero con el classpath que figura en los documentos de Android aquí: https://developer.android.com/guide/navigation/navigation-pass-data

classpath "androidx.navigation:navigation-safe-args-gradle-plugin:2.1.0"

Y luego también encontré un tutorial que sugiere que use:

classpath "android.arch.navigation:navigation-safe-args-gradle-plugin:1.0.0-alpha07"

Ambos tenían el mismo problema: vinculante.root dio un error con el complemento activado

Aquí está mi onCreateView () para mi fragmento. Esa línea de retorno funciona correctamente cuando safe-args no está habilitado y no funciona cuando está habilitado

   override fun onCreateView(
    inflater: LayoutInflater, container: ViewGroup?,
    savedInstanceState: Bundle?
): View? {
    binding = DataBindingUtil.inflate(inflater, R.layout.fragment_encoder, container, false)

    return binding.root
}

¡Cualquier ayuda para resolver o comprender este problema es muy apreciada!

Hannah S.
fuente

Respuestas:

11

Tengo el mismo problema, está muy conectado para mí, pero solo cambia el nombre del diseño funcionará nuevamente, inténtalo: D

MarkWang
fuente
2
Eso hizo el truco, curiosamente, gracias. Para otros que vinieron aquí con el mismo problema, todo lo que tuve que hacer fue refactorizar> cambiar el nombre del archivo xml de diseño asociado con la clase que no reconocía vinculante.root. También deberá cambiar el nombre del tipo de clase generado automáticamente para el enlace en consecuencia. Una vez que hice eso, todo funcionó correctamente e incluso pude cambiar el nombre al nombre original. No estoy seguro de cómo esto hizo algo que la reconstrucción del proyecto no hizo ..
Hannah S.
Además, si está aquí debido a problemas con los argumentos seguros, es posible que desee considerar el uso de un ViewModel y LiveData compartidos. Eso es lo que estoy usando ahora porque tuve que seguir adelante cuando me quedé atrapado en argumentos seguros y estoy mucho más feliz
Hannah S.
24

Tengo el mismo problema y por fin lo intenté

Archivo -> Cachés / reiniciar no válidos

Esto funciona para mi.

Daniel Chin
fuente