tutorial studio example español ejemplo databinding data android data-binding

android - studio - La expresión de enlace de datos no se compila



data binding español (3)

Dentro de la etiqueta de datos, también debe agregar:

<import type="android.view.View" />

Estoy probando la nueva biblioteca de enlace de datos. Tengo un problema extraño en el que no se compila el enlace de la propiedad de visibility .

Esta es una versión simplificada del archivo xml:

<?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="header" type="com.example.EmailHeader" /> </data> <RelativeLayout ... > <TextView ... android:text="@{header.senderName ?? header.senderAddress}" android:visibility="@{header.hasAttachment ? View.VISIBLE : View.INVISIBLE}" /> </RelativeLayout> </layout>

Recibo el siguiente mensaje al compilar:

Error:Execution failed for task '':app:compileDebugJavaWithJavac''.

java.lang.RuntimeException: se encontraron errores de enlace de datos. **** / error de enlace de datos **** mensaje: los identificadores deben tener tipos definidos por el usuario del archivo XML. Falta la vista

Todo se compila (¡y funciona!) Cuando android:visiblity declaración de android:visiblity .

No veo lo que me estoy perdiendo aquí


El problema persistió a pesar de agregar <import type="android.view.View" /> a mi etiqueta de datos. Finalmente encontré que el error fue causado por una falta de coincidencia de mi nombre de variable y el objeto de mi clase POJO.

Esta fue mi etiqueta de datos:

<data> <import type="android.view.View" /> <variable name="employee" type="com.example.Employee"/> </data>

y estaba usando:

<TextView ... android:text="@{user.lastName}" />

en vez de:

<TextView ... android:text="@{employee.lastName}" />

Olvidé cambiarlo después de copiar el código de la documentación. Esté atento a errores como este que son difíciles de detectar para los novatos en DataBinding


Me enfrenté exactamente al mismo error causado por el hecho de que el objeto POJO estaba en un proyecto de biblioteca.

Simplemente actualice el build.gradle de la biblioteca para habilitar el enlace de datos, así como en el proyecto principal:

dataBinding { enabled = true }