Я объявляю ViewModel с SavedStateHandle в качестве параметра в модулях коинов.
- в модулях коинов
viewModel { (handle: SavedStateHandle) -> CacheProvider(handle) }
viewModel { SomeFragmentUsedViewModel(get()) }
- И инициируйте его в Activity
lateinit var cacheProvider: CacheProvider
- Повторно использовать в SomeFragment
private val viewModel: SomeFragmentUsedViewModel by inject()
private val cacheProvider: CacheProvider by sharedViewModel()
- При переходе в SomeFragment приложение вылетало при доступе к ViewModel:
2020-04-30 22:04:04.858 26677-26677/com.ncbportal.sit E/[Koin]: Instance creation error : could not create instance for [Factory:'com.ncb.common.viewmodel.CacheProvider']: org.koin.core.error.NoParameterFoundException: Can't get parameter value #0 from org.koin.core.parameter.DefinitionParameters@a37a822
org.koin.core.parameter.DefinitionParameters.elementAt(DefinitionParameters.kt:32)
org.koin.core.parameter.DefinitionParameters.component1(DefinitionParameters.kt:34)
com.ncbportal.di.ViewModelModuleKt$viewModelModule$1$77.invoke(Unknown Source:11)
com.ncbportal.di.ViewModelModuleKt$viewModelModule$1$77.invoke(Unknown Source:4)
org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:50)
org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:36)
org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:87)
org.koin.core.scope.Scope.resolveInstance(Scope.kt:214)
org.koin.core.scope.Scope.get(Scope.kt:181)
com.ncbportal.di.ViewModelModuleKt$viewModelModule$1$76.invoke(ViewModelModule.kt:117)
com.ncbportal.di.ViewModelModuleKt$viewModelModule$1$76.invoke(Unknown Source:4)
org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:50)
org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:36)
org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:87)
org.koin.core.scope.Scope.resolveInstance(Scope.kt:214)
org.koin.core.scope.Scope.get(Scope.kt:181)
com.ncbportal.deposit.fragment.ApplyTermDepositFragment$$special$$inlined$inject$1.invoke(ComponentCallbackExt.kt:51)
kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81)
2020-04-30 22:04:04.861 26677-26677/com.ncbportal.sit E/[Koin]: Instance creation error : could not create instance for [Factory:'com.ncbportal.deposit.viewmodel.ApplyTermDepositViewModel']: org.koin.core.error.InstanceCreationException: Could not create instance for [Factory:'com.ncb.common.viewmodel.CacheProvider']
org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:59)
org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:36)
org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:87)
org.koin.core.scope.Scope.resolveInstance(Scope.kt:214)
org.koin.core.scope.Scope.get(Scope.kt:181)
com.ncbportal.di.ViewModelModuleKt$viewModelModule$1$76.invoke(ViewModelModule.kt:117)
com.ncbportal.di.ViewModelModuleKt$viewModelModule$1$76.invoke(Unknown Source:4)
org.koin.core.instance.InstanceFactory.create(InstanceFactory.kt:50)
org.koin.core.instance.FactoryInstanceFactory.get(FactoryInstanceFactory.kt:36)
org.koin.core.registry.InstanceRegistry.resolveInstance$koin_core(InstanceRegistry.kt:87)
org.koin.core.scope.Scope.resolveInstance(Scope.kt:214)
org.koin.core.scope.Scope.get(Scope.kt:181)
com.nextbank.ncbportal.deposit.fragment.ApplyTermDepositFragment$$special$$inlined$inject$1.invoke(ComponentCallbackExt.kt:51)
kotlin.UnsafeLazyImpl.getValue(Lazy.kt:81)
Поиск по всем вопросам репозитория коинов, похоже, не является определенным способом создания модели ViewModel (в моем случае CacheProvider) для всех фрагментов и ViewModel для доступа.
Кто-нибудь знает об этом?