数据绑定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声明时,所有东西都编译(并且工作!)。

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

Solutions Collecting From Web of "数据绑定expression式不编译"

数据标签里面还需要添加:

 <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 }