我在我的项目中使用数据绑定,当在我的 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
它会显示错误,即类不可用。但是在我的 xml 文件中包含 <variable>
之后,它能够生成 ActivityMainBinding
类。
安卓工作室: 2.1.3
类路径: com.android.tools.build :gradle:2.1.3
minSdkVersion 16
targetSdkVersion 24
构建工具版本 24.0.0
原文由 Ravi 发布,翻译遵循 CC BY-SA 4.0 许可协议
我没有得到任何令人满意的答案。所以这里有一些技巧,它们是我的数据绑定知识的总结。
解决数据绑定问题的技巧
更新
为了获得 更准确的错误 和 建议,我强烈建议将 Android Studio 和 Gradle 插件版本更新到最新版本。因为在 AS 3.2 版本之后我没有遇到很多问题。
请参阅 最新的 Android Studio 和 最新的 Gradle 插件。
原始解决方案
将这些点一一核对。这些中的任何一个都可以完成您的工作。 第3点到最后真的很重要,所以不要错过它们。
1.检查是否启用数据绑定
您应该在
build.gradle
中 启用数据绑定。如果没有,那么添加这个和 Sync 。2.检查布局转换为绑定布局
现在,如果您希望生成数据绑定类,那么您应该 用数据
xml layout
(<layout
标签)包装 —。像这样的东西。连同此检查绑定变量名称是否与视图模型类中一样正确
3.自动生成的Binding类名?
您的数据绑定类应在创建绑定布局后生成。
4. 看不到导入建议?
有时当您键入
ActivityMai...
时,它 不会显示建议,在这种情况下 手动导入。5.阅读构建失败Logcat
如果构建失败,将不会生成布局中的绑定类和新变量。所以首先通过 Ctrl + F9 (Build > Make project) 制作项目 。
6.关闭并打开最近的项目
我总是这样做,因为它比
Rebuild
/Make
项目花费的时间要少得多。请注意, 我更喜欢 Close and Open from Recent ,因为它比 Rebuild / Restart IDE 花费的时间要少得多。
7. 重建项目
如果仍然没有生成您的课程。 (有时当我们粘贴布局文件时,它会发生)。然后从
Build> Rebuild
重建项目( _不是构建或制作项目_)。它将生成您的数据绑定类。 ( 重建对我来说是魔法。 )8. 拥有最新的Android Studio
将 AS 更新到 Android Studio 3.2 后,我觉得在数据绑定自动生成中修复了许多错误。所以你也应该有最新的AS。
#解决方案
<variables
通常,当我们在布局中放置一个变量时,它会创建一个 getter 和 setter。我们可以使用
binding.setItem(item);
和binding.getItem();
,但是如果您看不到这些方法,请阅读以下信息。1.关闭并打开最近的项目
如果您在布局中创建了一个数据变量
<variable
并且它 没有在数据绑定类中显示它的 setter 和 getter ,然后 从最近的项目中关闭和打开。2.更改类型后清理项目
如果您在布局中更改了某些
<variable
的类型并且 getter setter 类型没有改变,则 清理项目(Build> Clean Project
)最后的话
最后,如果您的绑定类仍然没有生成,那么我们就有了最强大的武器。 - 重启 Android Studio
这就是我为解决数据绑定错误所做的一切。如果您有任何进一步的问题,您可以在这里发表评论。