【发布时间】:2020-01-16 14:56:38
【问题描述】:
我正在尝试在父活动和子片段的范围之间共享实用程序类的实例。常识会告诉我,因为片段在活动范围内,我应该能够以某种方式访问此实用程序。因此,我的模块定义如下所示:
internal val DemoModule = module {
scope<DemoActivity> {
scoped <DemoEncryptionHandler>{ DemoEncryptionHandler(androidContext()) }
scope<DemoEncryptionFragment> {
viewModel { DemoViewModel(get() /* shared instance of DemoEncryptionHandler */) }
}
}
}
当我运行它时,我收到以下错误:
org.koin.core.error.NoBeanDefFoundException: No definition found for class:'com.sample.test.DemoEncryptionHandler'. Check your definitions!
很明显,它必须以不同的方式进行。我哪里错了?
【问题讨论】:
-
您需要修改您的范围以提供名称,然后使用
getScope("your scope").get()在其他范围内检索范围。这将为您提供跨范围所需的依赖项。 -
问题是我失去了从生命周期范围调用这些依赖项的能力。
标签: android kotlin dependency-injection koin