android - 如何修复 Koin lib 中的 "No compatible definition found for type ' 上下文?

标签 android kotlin dependency-injection koin

我刚刚开始在为测试准备的 android(以替换 Dagger 2)项目中使用 Koin 库。我对模块中的 android 应用程序上下文有疑问:

val M = module {
   val ctx = androidApplication() //here error
}

Koin 在 App 类中启动:

import android.app.Application
import android.content.Context
import org.koin.android.ext.android.startKoin

class App : Application() {

    override fun onCreate() {
        super.onCreate()
        startKoin(this, listOf(M))
    }
}

我得到日志:

D/App: onCreate()
I/KOIN: [context] create
E/KOIN: [ERROR] - Error while resolving instance for class 'android.app.Application' - error: org.koin.error.NoBeanDefFoundException: No compatible definition found for type 'Application'. Check your module definition 

然后应用程序崩溃了。我是否遗漏了 Koin 配置中的某些内容?在目标项目中,我有几个模块非常依赖于应用程序上下文。而且我不想对此上下文使用全局引用。

最佳答案

解决方案很简单,但不是那么明显。

Android Studio 以某种方式导入独立的 startKoin 函数而不是特定的 android 函数。

所以你必须更换

import org.koin.standalone.StandAloneContext.startKoin

import org.koin.android.ext.android.startKoin

应用类中

请告诉我这是否有效。

关于android - 如何修复 Koin lib 中的 "No compatible definition found for type ' 上下文?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52344507/

相关文章:

foreach - Kotlin:迭代列表并在索引处添加项目

rest - 节流或限制 Kotlin CoRoutine 计数

c# - 依赖注入(inject)和接口(interface)的许多实现

android - 如何在某些位置之间获取中心点(LatLng)?

android - 在另一个 XML 布局文件中包含现有的 XML 布局文件

java - Spring Data JPA findAllBy ... in ... orderBy 输入列表

java - Spring bean 接线

java - 从 JSON 获取数据

java - NullPointerException 即使没有什么是空的?

AngularJS - 将工厂从另一个模块注入(inject)提供者