android - 在核心模块中启用 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。
我知道,这可能是一个版本冲突问题,并且我的某些依赖项可能无法正常协同工作。我想我拥有最新版本的所有内容,所以我当然希望不是这样。
如果我的任何依赖版本与问题相关,我当然会在编辑中提供它们。
非常感谢您!
解决方案
我今天偶然找到了解决方案。
问题是 App 和 Core 模块在其清单中列出了相同的包名称。一旦我将 App 模块包更改为不同的,我就可以毫无问题地将数据绑定添加到核心模块。真希望 Android Studio 能为此提供更好的错误消息。
推荐阅读
- machine-learning - 神经网络 - 具有空输入的额外类的分类器
- sql - Flask 和 sqlite3 - 在“插入”sql 命令可以工作之前,是否需要用数据填充表?
- r - 有没有办法在 igraph R 中为输入和输出单独加权边缘?
- node.js - 使用条带向后端发出 http 请求时遇到问题
- bash - 无法在 macOS Catalina 10.15 上通过 mktemp 转换为临时文件
- firebase - 当我尝试显示当前 Firebase 用户的电子邮件时,为什么会得到 null?
- mongoose - 仅在超测的一项测试中连接 ECONNREFUSED 127.0.0.1:80 错误
- flutter - 如何使非固定大小的父行/列填满整个空间
- java - Javadoc 未生成 -- doc 文件夹
- php - 如何在 PHP 中用未组织的数组元素组织 CSV 数据?