Android 数据绑定表达式未编译

Android 数据绑定表达式未编译,android,data-binding,Android,Data Binding,我正在试用新的数据绑定库。我有一个奇怪的问题,绑定可见性属性时没有编译 这是xml文件的简化版本: <?xml version="1.0" encoding="utf-8"?> <layout xmlns:android="http://schemas.android.com/apk/res/android"> <data> <variable name="header" type="com.examp

我正在试用新的数据绑定库。我有一个奇怪的问题,绑定
可见性
属性时没有编译

这是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>
java.lang.RuntimeException:发现数据绑定错误。 ****/数据绑定错误****消息:标识符必须具有XML文件中的用户定义类型。视图缺少它

当我删除
android:visiblity
声明时,一切都会编译(并运行!)


我看不出我在这里遗漏了什么

您还需要添加的数据标记中:

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

我遇到了完全相同的错误,这是由POJO对象位于库项目中这一事实引起的

只需升级库的build.gradle,即可在主项目中启用数据绑定:

dataBinding {
    enabled = true
}

尽管将
添加到我的数据标记中,问题仍然存在。最终发现错误是由我的变量名和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}" />

从文档中复制代码后忘记更改它。
注意这样的错误,对于数据绑定的新手来说,很难发现这些错误

应该注意的是,错误清楚地表明“视图”没有定义。导入
android.view.view
应该可以修复它,如果没有,请分享新的错误和更新的布局代码。我也有同样的问题,这对我来说很有效。我知道,这应该是公认的答案。谢谢你!我的处理程序也面临同样的问题,但我没有在中声明。在声明了我的处理程序之后,它得到了修复。“错误清楚地表明”。。如果你知道答案,那就很清楚了。否则,这是一条写得非常糟糕的错误消息。读给我听,就像视图缺少用户定义的类型一样(不管这意味着什么)。这为我修复了它。谢谢你能分享你的EmailHeader类吗?不仅仅是新手,这是一个常见的模式,我们现在必须处理。
<TextView
        ...
        android:text="@{employee.lastName}" />