不再生成数据绑定类

问题描述 投票:-1回答:2

我在Android-Studio中有一个工作项目,包括Databinding。这消除了一些可能的错误来源。 ;-)

然后我决定用Kotlin弄湿我的脚,开始将一些类从Java迁移到Kotlin。不幸的是,我也在这个过程的中间点击将Android-Studio更新为3.4。所以现在我有很多活动部件......

现在经过一些编辑后,当我尝试编译我的应用程序时,不再生成数据绑定类。通常这是一个缺少getter或setter或类似的问题。但是目前我没有表明存在此类问题的编译器错误。只有我的BR的所有参考。 class为红色,因为未生成此类。

在布局文件中,数据变量中的getter和setter未显示 - 因此存在问题。

构建日志告诉我检查日志以获取详细信息,但是我找不到任何可能导致解决方案的错误消息日志。

Android-Studio 3.4,混合Java / Kotlin源码除了缺少BR类之外,我目前没有其他编译错误。

我检查了原始gradle输出,并尝试使用更详细的输出运行这些步骤 - 没有运气。

也许这是相关的: - 使用约束视图编辑现有布局时也遇到问题。不知何故,约束是只读的。经过一些小工作后,我设法让一个布局回到读写模式。我没做什么来完成这个...... - 此外我还有Android-Studio“记住”最后一个项目的问题,并将上一个项目的配置与当前项目的配置混合在一起。为了解决这个问题,我必须删除项目中的.idea文件夹...之后我可以使用我的项目,直到我换到另一个或者并行打开第二个...: - /

为了获取日志,我也改为由编译器生成绑定类,而不是由Android-Studio动态生成 - 没有运气。

由于这是一个有一些历史的安装,我也试图从Android-Studio中删除配置文件 - 也没有运气。

清理和重建项目,重新启动Android-Studio,使高速缓存无效......所有尝试都没有成功。

目前我的想法在哪里看。也许那里有人给我一个提示?

android-studio
2个回答
0
投票

如果您使用xml中的导入

<import type="java.lang.Integer"/>

你必须删除它,因为android studio是自动导入的。

参考:

Just as in managed code, java.lang.* is imported automatically.


0
投票

最后我找到了问题的根源! 经过多次尝试在我的代码中找到错误或者在Android-Studio中(也降级到3.3并尝试了当前的3.5 canary版本),我决定将代码删除到最大值。

所以我创建了一个新项目。在那个项目中,我创建了2个可观察的类,并复制了https://developer.android.com/topic/libraries/data-binding/observability#observable_objects中的最小代码。我在java中创建了一个类,在Kotlin中创建了一个类(在属性中使用了索引号,这样我就可以看到在BR类中生成了哪些属性)。只有来自Java类的属性在BR类中生成,而Kotlin类中的属性丢失了。除了缺少的BR属性之外,没有生成任何错误消息。 :-(

有了这些信息,我开始了一项新研究,最后发现,对于Kotlin来说,目前在项目build.gradle文件中缺少apply plugin: 'kotlin-kapt'。 一旦我添加了这个,Kotlin类的属性也被添加到BR类中。 一些(较旧的)文章也将kapt "com.android.databinding:compiler:x.x.x"添加到依赖项中,但是使用最新的编译器,我得到了空指针异常。似乎该组件已在其他地方引用,因为它不再是必需的(更多)。

我还将此添加到我的其他项目中,现在那些BR属性也出现在那里。所以我有信心找到我的问题的答案,现在可以专注于修复我的应用程序。

© www.soinside.com 2019 - 2024. All rights reserved.