我正在尝试新的数据绑定库。我有一个奇怪的问题,绑定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:发现数据绑定错误。 **** /数据绑定错误****消息:标识符必须具有XML文件中的用户定义类型。视图缺少它
当我删除android:visiblity
声明时,一切都编译(并且有效!)
我不知道我在这里缺少什么
在数据标记内部,您还需要添加:
<import type="android.view.View" />
尽管在我的数据标记中添加了<import type="android.view.View" />
,问题仍然存在。最后发现错误是由我的变量名称和我的POJO类的对象不匹配引起的。
这是我的数据标签:
<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
}