未生成数据绑定类(android studio data binding)

我在我的项目中使用数据绑定,当在我的 xml 绑定类中使用<layout>和<data>时不会生成。

我在我的项目中使用数据绑定,当在我的 xml 绑定类中使用<layout><data>时不会生成。

例如,我有 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>

现在,如果我写ActivityMainBinding在我的活动 / 片段它显示错误,类不可用。但包括<variable>在我的 XML 文件后,它能够生成ActivityMainBinding类。

Android Studio:2.1.3
类路径:com.android.tools.build:gradle:2.1.3
minSdkVersion16
targetSdkVersion24
buildToolsVersion24.0

342

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

解决 DataBinding 问题的提示

使现代化

要获得更准确的错误建议,我强烈建议将 Android Studio 和 Gradle 插件版本更新为最新版本。因为在 AS 3.2 版本之后我不会遇到很多问题。

SeeLatest Android Studio,andLatest Gradle Plugin.

Orignal 解决方案

阅读此答案后,您将不会卡住在数据绑定自动生成问题对于类和数据变量

逐一检查这些要点,这些中的任何一个都可以使您的工作完成。第三点到最后一点真的很重要,所以不要错过它们。

1.检查数据绑定是否启用

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

android {
    ...
    buildFeatures {
        dataBinding true
    }
}

2.检查布局是否在绑定布局中转换

现在,如果你想生成数据绑定类,那么你应该包装xml layout与数据绑定<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>

同时检查绑定变量名称是否与视图模型类中一样正确

3.自动生成的绑定类名?

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

如果您的布局名称是蛇形activity_main.xml,那么数据绑定类将在骆驼形中生成,如ActivityMainBinding

4.看不到导入建议?

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

import <yourpackage>databinding.ActivityMainBinding;

5.读取构建失败 Logcat

如果构建失败,则不会生成布局中的绑定类和新变量。因此,首先Make projectbyCtrl + F9 (Build & gt;Make project)

如果构建失败,那么看看什么是错误,通常我们在布局字段中有错误。错误日志将指出问题的错误行号。

绑定可能失败导致一些愚蠢的错误,如语法错误或缺少导入。在这种情况下,您将获得 logcat 充满绑定类的错误。但是您应该阅读完整的 logcat找到适当的问题

6.最近关闭和打开项目

我总是这样做,因为它比Rebuild/Make项目花费的时间少得多。

从文件关闭项目 & gt;关闭项目

从最近重新打开

请注意,我更喜欢最近中的关闭并打开,因为它比重建 / 重新启动 IDE花费的时间少得多。

7.重建项目

如果仍然没有生成您的类。(当我们粘贴布局文件时,它会发生)。然后从Build> RebuildNot Build or Make projectRebuild Project。它将生成您的数据绑定类。(Rebuild 对我来说很神奇。

8.拥有最新的 Android Studio

将 AS 更新为Android Studio 3.2后,我感觉数据绑定自动生成中修复了许多错误。所以你也应该有最新的 AS。

#<variables的解决方案

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

通常,当我们在布局中放置一个变量时,它会创建一个 getter 和 setter。我们可以使用binding.setItem(item);binding.getItem();,但是如果您看不到这些方法,请阅读以下信息。

1.关闭和打开最近的项目

如果您在布局中创建了一个数据变量-<variable,并且没有在数据绑定类中显示其 setter 和 getter,那么从最近的关闭并打开您的项目。

2.更改类型后清理项目

如果您更改了布局中某些<variable的类型,并且 getter setter 类型未更改,则清理项目(Build> Clean Project

结束语

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

首先,尝试只是重新启动,这总是在重新启动后生成我的绑定布局的变量。

如果它不起作用,则Invalidate Cache & amp;Restart

这是我所做的一切来解决我的数据绑定错误。

42

DataBinding 类自动生成。

如果您的 xml 名称是 activity_test,则 Binding 类将是ActivityTestBinding

但是,

dataBinding {
        enabled = true
    }

布局应该有布局作为根

<layout xmlns:android="http://schemas.android.com/apk/res/android">
</layout>
18

我有同样的问题。在阅读了 android sdk docs 之后,只有预期的文件名要创建,但如果它没有发生,就没有什么可做的。我注意到经过一些更多的研究,在将名称空间删除到布局元素后,如下所示(使用您的示例),它为我工作。

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

在我的情况下,Binding 类被生成并就位(但我认为不是)...但它不会自动将所述类的导入添加到活动 / 片段导入部分...

本站系公益性非盈利分享网址,本文来自用户投稿,不代表码文网立场,如若转载,请注明出处

(941)
使用AndroidStudio为SamsungEdgePanel设计Android应用程序
上一篇
Android股票图表
下一篇

相关推荐

发表评论

登录 后才能评论

评论列表(28条)