数据绑定expression式不编译

我正在尝试新的数据绑定库。 我有一个奇怪的问题,在绑定visibility属性不编译。

这是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> 

编译时出现以下消息:

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

java.lang.RuntimeException:发现数据绑定错误。 **** /数据绑定错误**** msg:标识符必须具有XML文件中的用户定义types。 视图缺less它

当我删除android:visiblity声明时,所有东西都编译(并且工作!)。

我不明白我在这里错过了什么

  • 数据绑定 - safeUnbox警告
  • Android数据绑定将parameter passing给onClick方法
  • 数据绑定:用多种方法绑定来自监听器的单一方法
  • 如何使用ToggleButton执行双向数据绑定?
  • Android数据绑定产生“在错误位置生成的源文件夹”
  • Android的 - 数据绑定 - 如何以及何时将生成绑定类?
  • Gradle找不到com.android.databinding:dataBinder:1.0-rc0
  • Android的数据绑定(类似于WPF)?
  • 数据标签里面还需要添加:

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

    尽pipe将<import type="android.view.View" />到我的数据标记,问题仍然存在。最终发现错误是由我的POJO类的variables名称和对象的不匹配造成的。

    这是我的数据标签:

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

    我正在使用:

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

    代替:

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

    从文档复制代码后忘记更改它。 注意这样的错误,很难检测到DataBinding的新手

    我面对的是POJO对象在图书馆项目中造成的完全相同的错误。

    只需更新库的build.gradle来启用数据绑定以及在主要项目中:

     dataBinding { enabled = true }