【问题标题】:Data binding expression not compiling数据绑定表达式未编译
【发布时间】:2015-11-11 04:04:10
【问题描述】:

我正在试用新的数据绑定库。我有一个奇怪的问题,绑定 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 文件的用户定义类型。视图不见了

当我删除 android:visiblity 声明时,一切都会编译(并且有效!)。

我没有看到我在这里缺少什么

【问题讨论】:

  • 你能分享一下你的 EmailHeader 类吗?

标签: android data-binding


【解决方案1】:

你还需要在data标签里面添加:

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

【讨论】:

  • 应该,错误明确指出“视图”没有定义。导入android.view.View 应该可以修复它,如果没有,请分享新的错误和更新的布局代码。
  • 我遇到了同样的问题,这对我有用。恕我直言,应该是公认的答案。谢谢白白!
  • 我的处理程序遇到了同样的问题,我没有在 中声明。声明我的处理程序后,它得到了修复。
  • “错误清楚地表明”.. 如果您知道答案可能是什么,请清除。否则,这是一个非常书面的错误消息。读给我听,就像视图缺少用户定义的类型(无论这可能意味着什么)。
  • 这为我修复了它。谢谢!
【解决方案2】:

尽管在我的数据标签中添加了&lt;import type="android.view.View" /&gt;,但问题仍然存在。最后发现错误是由于我的变量名和我的 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 新手来说很难发现的错误

【讨论】:

  • 不只是新手,这是一种常见的模式,我们现在必须处理。
【解决方案3】:

由于 POJO 对象位于库项目中,我遇到了完全相同的错误。

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

dataBinding {
    enabled = true
}

【讨论】:

    猜你喜欢
    • 2013-03-10
    • 2020-11-27
    • 1970-01-01
    • 2017-06-30
    • 2020-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-05
    相关资源
    最近更新 更多