【发布时间】:2021-10-02 02:30:16
【问题描述】:
我正在开发一个包含三个模块 Core、A 和 B 的多模块项目。 A 和 B 两个模块都使用 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