Android Koin简单对象注入失败
我正在尝试学习Koin在android中的依赖注入。我开始遵循这个示例,并尝试通过注入非常简单的对象,但我得到的错误是Android Koin简单对象注入失败,android,kotlin,koin,Android,Kotlin,Koin,我正在尝试学习Koin在android中的依赖注入。我开始遵循这个示例,并尝试通过注入非常简单的对象,但我得到的错误是nobeandefoundexception:No defind for… 这是我的密码 Gradle // Koin def koin_version = '2.0.1' implementation "org.koin:koin-androidx-scope:$koin_version" implementation "org.koin:koin-an
nobeandefoundexception:No defind for…
这是我的密码
Gradle
// Koin
def koin_version = '2.0.1'
implementation "org.koin:koin-androidx-scope:$koin_version"
implementation "org.koin:koin-androidx-viewmodel:$koin_version"
implementation "org.koin:koin-androidx-ext:$koin_version"
override fun onCreate() {
super.onCreate()
startKoin{
androidLogger()
androidContext(this@Application)
listOf(applicationModule)
}
}
应用程序onCreate()
模块.kt
val applicationModule = module {
factory { UserSession("email","password") }
}
但是,当我尝试将它作为
private val userSession:userSession by inject()
插入任何地方(应用程序、活动、片段)时,我得到了上述错误。我遗漏了什么吗?您可能被语法弄糊涂了,您应该调用方法modules
,并为它提供您想要启动的模块
listOf
返回值在您的情况下被忽略,您应该这样做:
startKoin {
androidLogger()
androidContext(this@Application)
modules(applicationModule)
}
试试这个
KoinApp.kt
class KoinApp : MultiDexApplication() {
override fun onCreate() {
super.onCreate()
startKoin(this, listOf(appModule))
}
}
appModule.kt
@JvmField
val appModule = module {
single { DataRepository(get()) }
}
答案会有用的,但为了将来的证明,我仍然会有一份清单
startKoin {
androidLogger()
androidContext(this@Application)
modules(listOf(applicationModule))
}