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

未生成数据绑定类

孙嘉悦
2023-03-14

我正在项目中使用数据绑定,但在xml绑定类中使用 时未生成。

例如,我有activity_main.xml

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">
    <data>    </data>
    <RelativeLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">
    </RelativeLayout>
</layout>

Android Studio:2.1.3
类路径:com.Android.tools.build:Gradle:2.1.3
minSdkVersion 16
targetSdkVersion 24
buildToolsVersion 24.0.0

共有1个答案

申思远
2023-03-14

我没有得到任何令人满意的答复。这里是我的数据绑定知识的总结。

要获得更准确的错误和建议,我强烈建议将Android Studio和Gradle插件版本更新到最新。因为AS3.2版本之后我面临的问题不多。

查看最新的Android Studio和最新的Gradle插件。

这些点一一检查。任何这些都可以让你的工作完成。第三点是非常重要的,所以不要错过。

您应该在build.gradle中启用数据绑定。如果没有,则添加该值并同步。

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

现在,如果希望生成数据绑定类,则应该使用数据绑定( 标记)包装 XML Layout。像这样的东西。

<?xml version="1.0" encoding="utf-8"?>
<layout xmlns:android="http://schemas.android.com/apk/res/android">

    <android.support.constraint.ConstraintLayout
        android:layout_width="match_parent"
        android:layout_height="match_parent">

    </android.support.constraint.ConstraintLayout>
</layout>

您的数据绑定类应在创建绑定布局后生成。

如果您的布局名称为snake格式activity_main.xml,那么数据绑定类将以骆驼格式生成,如activitymainbinding

有时当您键入activitymai...时,它不会显示建议,在这种情况下是手动导入。

import <yourpackage>databinding.ActivityMainBinding;

如果构建失败,将不会生成绑定类和布局中的新变量。因此,首先通过Ctrl+F9(Build>Make project)制作项目。

  • 如果构建失败,则查看什么是错误,通常我们在布局字段中有错误。错误日志将指出出现问题的错误行号。
  • 绑定失败可能会导致一些愚蠢的错误,如语法错误或缺少导入。在那种情况下,您将得到充满绑定类错误的logcat。但您应该阅读完整的logcat以查找适当的问题。

我总是这样做,因为这比重新生成/生成项目花费的时间少得多。

    null

注意,我更喜欢从最近开始关闭和打开,因为这比重新构建/重新启动IDE花费的时间少得多。

如果仍然没有生成您的类。(有时当我们粘贴布局文件,然后它发生)。然后从Build>Rebuild(而不是Build或Make Project)重新生成项目。它将生成数据绑定类。(重建对我有魔力。)

在更新到Android Studio3.2后,我感觉到数据绑定自动生成中有很多错误被修复。所以你也应该有最新的AS。

<data>
    <variable
        name="item"
        type="com.package.Model"/>
</data>

如果您更改了布局中某些 的类型,并且getter setter类型没有更改,则Clean project( Build>Clean project)

最后,如果您的绑定类仍然没有生成,那么我们就拥有了最强大的武器。-重启Android Studio

  • 首先,尝试重新启动,这总是在重新启动后生成绑定布局的变量。
  • 如果它不工作,则使缓存无效并重新启动。

这就是我为解决数据绑定错误所做的全部工作。如果你有任何进一步的问题,你可以在这里发表评论。

 类似资料:
  • 错误CS0234:类型或命名空间名称com.sushi.hangover”中不存在。是否缺少程序集引用? 我有一个Android绑定项目,它有从多个接口继承的类,但这些接口没有生成,因此依赖于它们的所有公共类都无法绑定。 如您所见,该接口的没有设置为,因此不会生成C#代码,但是begin生成了依赖于该接口的公共类: 绑定在将接口名称从转换为时,可以识别接口。 是否有任何方法可以强制创建这些接口,而

  • Android Studio:3.1.0、3.1.1 分级:4.4 生成工具:3.1.0 我正在使用数据绑定库。当我向project添加布局文件或向布局文件中添加任何视图时,Android Studio无法为布局生成绑定类,直到重新构建项目。 布局文件: 我查看了Android Studio的日志,当布局文件发生变化时,总会有错误消息。

  • 数据绑定 JXML 中的动态数据来自于该 Page 的 data字段。 简单绑定 数据绑定使用 Mustache 语法(双大括号)将变量包起来,可以作用于以下: 页面内容 <view> hello {{ name }} </view> Page({ data: { name: 'cortana' } }) 组件属性(需要在双引号之内) <view id="{{id}}"> </

  • attr绑定是用来为html元素绑定属性值的,这种绑定非常有用,例如我们需要想一个元素添加title属性,或者为img标签添加src属性。 示例代码: //.W片段 <a bind-attr="{ href: url, title: details }"> Report </a> //js片段 this.url=justep.Bind.observable("year-end.html"),

  • submit绑定只能用在form元素中,当form提交的时候被触发,并且默认阻止form的提交。因此我们通常在submit的处理函数中以ajax的方式提交form表单。 示例代码: //.W片段 <form bind-submit="doSomething"> ... form contents go here ... <button type="submit">Submit</butt

  • with绑定用来创建一个绑定上下文,在子元素内的所有绑定都在这个上下文中进行。 示例代码: //.W片段 <h1 bind-text="city"> </h1> <p bind-with="coords"> Latitude: <span bind-text="latitude"> </span>, Longitude: <span bind-text="longitude"> </span