Lun*_*lpo 3 android dependency-injection kotlin koin
我刚开始在准备测试的 android(替换 Dagger 2)项目中使用 Koin lib。我在模块中的 android 应用上下文有问题:
val M = module {
val ctx = androidApplication() //here error
}
Run Code Online (Sandbox Code Playgroud)
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))
}
}
Run Code Online (Sandbox Code Playgroud)
我得到日志:
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
Run Code Online (Sandbox Code Playgroud)
并且应用程序崩溃。我是否错过了 Koin 配置中的某些内容?在目标项目中,我有几个深深依赖于应用程序上下文的模块。而且我不想使用对这个上下文的全局引用。
解决方案很简单,但不是那么明显。
不知何故,Android Studio 导入了独立的 startKoin 函数,而不是特定的 android 函数。
所以你必须更换
import org.koin.standalone.StandAloneContext.startKoin
Run Code Online (Sandbox Code Playgroud)
到
import org.koin.android.ext.android.startKoin
Run Code Online (Sandbox Code Playgroud)
在Application课堂上
请告诉这是否有效。
| 归档时间: |
|
| 查看次数: |
7849 次 |
| 最近记录: |