我正在尝试新的数据绑定库。我有一个奇怪的问题,即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
声明时,所有内容都会编译(并且有效!)。
我看不到我在这里缺少的东西
答案 0 :(得分:161)
在数据标签内部,您还需要添加:
<import type="android.view.View" />
答案 1 :(得分:28)
尽管在我的数据标记中添加了<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
答案 2 :(得分:7)
我遇到了由POJO对象在库项目中引起的完全相同的错误。
只需更新库的build.gradle即可启用数据绑定以及主项目:
dataBinding {
enabled = true
}