小编Luk*_*ler的帖子

使用 Koin 进行依赖注入时,Jetpack Compose Preview 不起作用

我想在我的应用程序中使用 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)
    ...
Run Code Online (Sandbox Code Playgroud)

我的 BaseFragment 看起来像这样

public abstract class BaseFragment {


    private final ActiveViewIdInteractor activeViewIdInteractor =
            new ActiveViewIdInteractor(KoinJavaComponent.get(ActiveViewIdService.class));
...
Run Code Online (Sandbox Code Playgroud)

我继承的片段看起来像这样

class ComposeDemoFragment: BaseFragment() {
   ...

   @Composable
    fun ComposeDemoFragmentContent() {
        Text(text = "Hello World",
            Modifier
                .fillMaxWidth()
                .background(Color.Cyan)
        )
    }

    @Preview
    @Composable
    private fun Preview() {
        ComposeDemoFragmentContent()
    }

Run Code Online (Sandbox Code Playgroud)

如果在不继承自 BaseFragment 的 …

android android-studio koin android-jetpack-compose android-jetpack-compose-preview

12
推荐指数
1
解决办法
4120
查看次数