【问题标题】:Android view binding between modules模块之间的Android视图绑定
【发布时间】:2020-05-23 16:59:32
【问题描述】:

视图绑定在模块之间有效吗?

如何重现:创建 2 个模块 >>> 在 module1 中创建 layout1 并在 module2 中创建 layout2 >>> 在 module1 中创建 Fragment1,其中包含 layout1、layout2 >>> 尝试获取绑定 >>> layout1 将工作,因为它与 Fragment1 在同一个模块中,但 layout2 由于绑定生成错误而无法工作

我的例子:

Authentication 模块依赖于common 模块。

base_button.xml 位于 common 模块中。

login_input_component.xmlAuthentication 模块中,所以没有问题。

但此错误发生在 loginButton 绑定上。

即使 base_button.xml 在另一个模块中,它也会尝试在身份验证模块中查找 BaseButtonBinding。

所有模块都有:

buildFeatures {
    dataBinding = true
    viewBinding = true
}

【问题讨论】:

  • 我没有尝试重现您的案例,但我有一个项目,其中在 module2 中使用了来自 module1 的绑定类并且它可以工作。你检查过你的模块 gradle 文件吗?
  • 是的,一切都应该如此。你能告诉我你的灵魂解决方案吗?
  • @Nikron 我也有同样的问题,¿您找到解决方案了吗?
  • @PabloA.Martínez 很遗憾没有
  • @Nikron 我也试过了,我生成了正确的文件,你能确保你的 IDE 和 Gradle 已经更新并且你的 module1 依赖项中有 implementation project(":Module2") 吗?你能分享任何具有相同复制设置的 github 链接吗?

标签: android kotlin data-binding module dependencies


【解决方案1】:

如果我是正确的,你有这种结构

项目
| -- 应用
| -- module1 [包含 layout_one.xml 和 layout_fragment.xml]
| -- module2 [包含 layout_two.xml]

layout_fragment.xml 将包括 layout_one.xmllayout_two.xml

现在为了完成这项工作,您需要做的就是转到 module1 build.gradle 文件并添加此依赖项

implementation project(":module2")

请注意,您的应用会知道 module1 和 module2 文件,但 module1 和 module2 文件不会知道这两个文件的存在。所以通过指定这个依赖,我们使 module1 依赖于 module2

并确保在每个模块中 viewBinding 已启用

【讨论】:

  • 感谢您的回答,但正如我在示例中所说的那样 module1 == Authentication,module2 == common,并且依赖关系与您的示例相同。 ViewBinding 在所有模块中启用。如果你想通过绑定得到 layout_two 是不可用的。
【解决方案2】:

我遇到了完全相同的问题。 今天,一周后我再次解决了这个问题,我不得不在 Android Studio 中使缓存失效并重新启动,因为ViewBinding 类总是以红色突出显示“无法解决”,但构建和运行是成功的。 我之前做了一个clean build,然后使缓存失效并重新启动

之后,一切都按相位进行。

我希望这对你的情况也有帮助。

【讨论】:

    【解决方案3】:

    对我来说问题是 Windows 10 限制了 Android Studio 中的下载功能并且不允许它下载。也许您应该完成在 Windows 10 中建立 Android Studio 信任的过程。

    【讨论】:

    • 您的答案可以通过额外的支持信息得到改进。请edit 添加更多详细信息,例如引用或文档,以便其他人可以确认您的答案是正确的。你可以找到更多关于如何写好答案的信息in the help center
    猜你喜欢
    • 1970-01-01
    • 2020-07-01
    • 1970-01-01
    • 2013-10-31
    • 2017-07-11
    • 2011-04-26
    • 2017-09-24
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多