【发布时间】:2022-08-10 22:40:22
【问题描述】:
我想在我的应用程序中使用 Jetpack Compose。我已经在使用 Koin 进行 DI。因为我的 BaseFragment 中有很多方便的方法,所以我想从它继承并用 compose 构建相应的视图。
现在的问题是,当在 BaseFragment 中使用 DI 并从中继承时,不会显示可组合的预览,并且会出现以下错误消息:
并引发以下异常:
java.lang.IllegalStateException: KoinApplication has not been started
at org.koin.core.context.GlobalContext.get(GlobalContext.kt:36)
at org.koin.java.KoinJavaComponent.getKoin(KoinJavaComponent.kt:122)
at org.koin.java.KoinJavaComponent.get(KoinJavaComponent.kt:87)
at org.koin.java.KoinJavaComponent.get$default(KoinJavaComponent.kt:81)
at org.koin.java.KoinJavaComponent.get(KoinJavaComponent.kt)
...
我的 BaseFragment 看起来像这样
public abstract class BaseFragment {
private final ActiveViewIdInteractor activeViewIdInteractor =
new ActiveViewIdInteractor(KoinJavaComponent.get(ActiveViewIdService.class));
...
我继承的片段看起来像这样
class ComposeDemoFragment: BaseFragment() {
...
@Composable
fun ComposeDemoFragmentContent() {
Text(text = \"Hello World\",
Modifier
.fillMaxWidth()
.background(Color.Cyan)
)
}
@Preview
@Composable
private fun Preview() {
ComposeDemoFragmentContent()
}
如果在不从 BaseFragment 继承的 Fragment 中使用完全相同的预览,则一切正常。我已经包含了“Koin for Compose”的依赖项,并且还尝试过使用 CoKoin。在这一点上,我不知道如何处理错误消息,或者错误消息是否与实际问题几乎没有关系。
这是一个错误还是有办法绕过这个错误?
标签: android android-studio android-jetpack-compose koin android-jetpack-compose-preview