当前位置: 首页 > 知识库问答 >
问题:

数据绑定表达式未编译

薛飞星
2023-03-14

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

这是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声明时,一切都会编译(并正常工作!)。

我不知道我错过了什么

共有3个答案

傅彬
2023-03-14

我面临着完全相同的错误,这是由POJO对象在库项目中这一事实引起的。

只需升级版本。在主项目中启用数据绑定的库渐变:

dataBinding {
    enabled = true
}
武峻熙
2023-03-14

尽管添加了

这是我的数据标签:

<data>
        <import type="android.view.View" />
        <variable
            name="employee"
            type="com.example.Employee"/>
    </data>

我用的是:

<TextView
        ...
        android:text="@{user.lastName}" />

而不是:

<TextView
        ...
        android:text="@{employee.lastName}" />

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

吕华彩
2023-03-14

在数据标签内部,您还需要添加:

<import type="android.view.View" />
 类似资料:
  • 我是android数据绑定的新手。我想将多个SeekBars绑定到浮点数集合,例如 由于SeekBar的进展是Int类型,我认为使用转换器会更好,下面是转换器代码: 模型结构看起来像这样: 我的xml如下: 问题是,每次我构建它时,它都会显示: 我已经参考了很多网站,包括以下内容: https://medium.com/androiddevelopers/android-data-binding-

  • 我知道有很多javafx教程。但其中99%没有提供好的fxml内容。在fxml中,我们可以按照JavaFX调用它的方式进行数据绑定或“表达式绑定”。 当应用程序启动时,将显示图像。但是当鼠标光标移动到图像上时,就会调用getImage方法,但是图像不会改变。有没有一种最小代码隐藏的方法来解决这个问题? 我不想做的是这里 使用TableView,可以通过可观察的集合绑定数据。如果列表内容更改,tab

  • 问题内容: 我已经用Google搜索了此错误,还没有得出为什么我会收到此错误的结论。我正在尝试用一些数据填充DataGridView。这是我的代码。 查询存储在Access中的“ project_master_query”。 如您所见,查询中根本没有Nz,所以我根本不明白为什么会这样。一旦调用dt.Load,就会发生该错误。 问题答案: 该函数最有可能在许多联接之一中引用的视图/查询中。您必须仔细

  • 我搜索了谷歌和Stackoverflow,但我找不到我的问题的答案。 我目前正在使用Jaspersoft Studio 5.6.2 final,我试图在我的表达式编辑器中显示一个自定义函数,但无论我如何尝试,我都无法显示类别和函数。 我开始关注 https://community.jaspersoft.com/wiki/jaspersoft-studio-expression-editor-how

  • 我正在项目中使用数据绑定,但在xml绑定类中使用和时未生成。 例如,我有activity_main.xml Android Studio:2.1.3 类路径:com.Android.tools.build:Gradle:2.1.3 minSdkVersion 16 targetSdkVersion 24 buildToolsVersion 24.0.0

  • 问题内容: 自1.3.0-beta.10版本以来,AngularJS具有一项新功能:“懒惰的一次性绑定”。 可以在简单表达式的前面加上,告诉angular在首次评估表达式后停止观看。给出的常见示例如下所示: 类似以下表达式的语法是否类似? 问题答案: 是。您可以在每个表达式前添加,甚至可以在或中添加前缀: 实际上,代码只是检查表达式中的前两个字符是为了激活一次性绑定(然后将其删除,因此甚至不需要括