【发布时间】:2020-05-14 07:41:24
【问题描述】:
我正在为我的 Android 应用程序使用 MVVM 架构,并且刚开始使用 Koin。当我尝试注入多个参数时,问题开始出现。
现在我有 Repository 类,它使用:
-
RESTApi进行网络通话。RestProvider使用SocketProvider作为构造函数参数 -
Utils(Context)作为获取一些基本信息的助手(appVersion, IMEI 等)
我的应用模块
{
single<RepositoryApi> {
Repository(
Utils(androidContext())
\\ RestProvider(SocketProvider()) Here I get problems
)
}
single<RestApi> { RestProvider(get() as SocketProvider) }
single<SocketApi> { SocketProvider() }
single<UtilsApi> { Utils(androidContext()) }
viewModel { LoginViewModel(get()) }
}
当我使用 Utils 时,一切正常,当我添加 RestProvider 时,我得到异常:
原因:org.koin.core.error.InstanceCreationException:不能 为 [type:Single,primary_type:'com.etrans.ntsdriver.provider.repository.RepositoryApi'] 在 org.koin.core.instance.DefinitionInstance.create(DefinitionInstance.kt:61) 在 org.koin.core.instance.SingleDefinitionInstance.get(SingleDefinitionInstance.kt:40) 在 org.koin.core.definition.BeanDefinition.resolveInstance(BeanDefinition.kt:70) 在 org.koin.core.scope.Scope.resolveInstance(Scope.kt:165) 在 org.koin.core.scope.Sc
我知道我遗漏了一些东西,但我没有找到任何教程或示例来解释这种情况。
我与 Koin 相关的 gradle 依赖项(也许会有用):
// Koin for Android - ViewModel features
implementation "org.koin:koin-android-viewmodel:$koin_version"
implementation "org.koin:koin-java:$koin_version"
testImplementation "org.koin:koin-test:$koin_version"
androidTestImplementation "org.koin:koin-test:$koin_version"
提前感谢您的帮助
【问题讨论】: