【问题标题】:Composable annotation in android jetpack composeandroid jetpack compose中的可组合注释
【发布时间】:2021-10-02 02:30:16
【问题描述】:

我正在开发一个包含三个模块 CoreAB 的多模块项目。 AB 两个模块都使用 Core。模块B 中有一个屏幕(或可组合的),我需要在模块A 中重用它。我可以将该屏幕移动到Core,但我不认为这是可扩展的。所以我在Core 中定义了一个Interface,它的实现将由B 提供。然后A 将通过 DI 获得 Interface 并使用它而不处理它的实现。

interface NotificationLayout {
    @Composable
    fun NotificationLayoutStatusState(
        modifier: Modifier,
    )
}

这将由B 实施。但是当我运行它时,它只是崩溃了NoSuchMethodError

java.lang.NoSuchMethodError: No interface method NotificationLayoutStatusState(Landroidx/compose/ui/Modifier;Landroidx/compose/runtime/Composer;I)V

谁能帮帮我。我认为这与Composable 注释有关。

【问题讨论】:

  • 我不知道如何解决您的问题,但在架构方面我会创建一个新模块,例如 SharedViews
  • 我认为共享视图意味着共享 ViewModel、状态类和几乎所有内容。我认为这可能会导致上帝模块。所以,我正在尝试使用依赖倒置来将视图代码保留在它自己的模块中,并且只共享一个合同。

标签: android android-jetpack-compose


【解决方案1】:

解决方案是在所有使用该接口的模块中启用 compose(即不仅添加 compose 依赖项)。以前我只在模块 AB 中启用撰写,而不是在 core 中启用撰写,这是导致问题的原因。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-14
    • 2021-01-05
    • 2020-12-30
    • 2022-07-19
    相关资源
    最近更新 更多