我没有得到令人满意的答案。因此,这里有一些技巧,这些技巧是我的数据绑定知识的摘要。
解决数据绑定问题的提示
更新资料
为了获得更准确的错误和建议,我强烈建议将Android Studio和Gradle插件版本更新为最新版本。因为AS 3.2版本之后我没有遇到很多问题。
请参阅最新的Android Studio和最新的Gradle插件。
原始解决方案
阅读此答案后,您将不会陷入类和数据变量的数据绑定自动生成问题。
逐一检查这些要点。这些都可以使您的工作完成。最后的第三点非常重要,所以不要错过它们。
1.检查是否启用了数据绑定
您应该在中启用了数据绑定build.gradle
。如果没有,则添加它并同步。
android {
...
dataBinding {
enabled = 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.阅读Build Fail Logcat
如果构建失败,则不会生成布局中的绑定类和新变量。因此,首先使项目通过按Ctrl + F9(编译>制作项目)。
- 如果构建失败,那么看看什么是错误,通常我们在布局字段中有错误。错误日志将指出问题所在的错误行号。
- 绑定可能会导致一些愚蠢的错误,例如语法错误或缺少导入。在这种情况下,您将获得充满绑定类错误的logcat。但是您应该阅读完整的logcat来找到适当的问题。
6.从最近关闭并打开项目
我总是这样做,因为它花费的时间比Rebuild
/ Make
项目少得多。
请注意,我更喜欢从最近关闭和打开,因为它比重建/重新启动IDE所花费的时间少得多。
7.重建项目
如果仍然没有生成您的类。(有时,当我们粘贴布局文件时,它会发生)。然后从中重建项目Build> Rebuild
(不是Build或Make project)。它将生成您的数据绑定类。(重建对我来说是魔术。)
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:D
- 首先,尝试重新启动,这总是在重新启动后生成绑定布局的变量。
- 如果它不起作用,则使缓存无效并重新启动。
这是我为解决我的数据绑定错误所做的全部工作。如果您还有其他问题,可以在这里发表评论。
dataBinding.enabled
在你的build.gradle?