首页 > 解决方案 > 在核心模块中启用 Android 数据绑定不起作用

问题描述

我有一个具有以下模块结构的 Android Kotlin 项目:

在此处输入图像描述

我的 App 和 Feature 模块使用数据绑定。一切正常。我现在想将一些通用逻辑移到核心模块中,所以我做到了。这还涉及一些自定义绑定适配器,因此我还在 Core 模块中启用了数据绑定。

项目构建并运行,但是,一旦使用数据绑定的第一个布局被膨胀binding = StartFragmentBinding.inflate(inflater, container, false),我就会收到如下错误消息java.lang.NullPointerException: inflate(inflater, container, false) must not be null

工作和不工作构建之间的唯一区别是在核心模块中启用了数据绑定。

我读到,当您的应用程序模块使用数据绑定时,它的所有依赖项也必须使用它。所以我为所有模块添加了数据绑定,包括那些实际上不需要它的模块。这并没有解决问题。需要注意的是,当核心模块不使用数据绑定时,该项目确实有效,因此这条关于所有模块必须使用数据绑定的规则似乎并不正确。

我还阅读了有关数据绑定处理器如何与任何 kapt 依赖项发生冲突的信息。在我的项目中,我只使用带有 kapt 的 Room。

我知道,这可能是一个版本冲突问题,并且我的某些依赖项可能无法正常协同工作。我想我拥有最新版本的所有内容,所以我当然希望不是这样。

如果我的任何依赖版本与问题相关,我当然会在编辑中提供它们。

非常感谢您!

标签: androidkotlindata-bindingmoduledependencies

解决方案


我今天偶然找到了解决方案。

问题是 App 和 Core 模块在其清单中列出了相同的包名称。一旦我将 App 模块包更改为不同的,我就可以毫无问题地将数据绑定添加到核心模块。真希望 Android Studio 能为此提供更好的错误消息。


推荐阅读