Невозможно использовать ViewModel с общим состоянием в Koin 2.1.6

Я использую Koin 2.1.6 в своем модуле приложения. Вот артефакты, которые я использую

implementation "org.koin:koin-android:2.1.6"
implementation "org.koin:koin-core:2.1.6"
implementation "org.koin:koin-androidx-viewmodel:2.1.6"
implementation "org.koin:koin-androidx-fragment:2.1.6"

А модуль Koin есть

val userModule = module {
   viewModel { (handle: SavedStateHandle) -> UserViewModel(get(), handle) }
}

class UserViewModel(
         val iService: IService, //injected from core module
         val handle: SavedStateHandle
) : ViewModel()

Я использую это ViewModel на UserFragment

private val viewModel: UserViewModel by stateViewModel()

UserFragment содержит внутренний фрагмент- UserUpdates, расширенный из макета, разделяет вышеуказанный ViewModel.

  <fragment android:name="UserUpdates"
            android:id="@id/fragment_user_updates"
            android:width="match_parent"
            android:height="wrap_content" />

На UserUpdates фрагменте я установил ViewModel следующим образом

 private val viewModel: UserViewModel by stateSharedViewModel()

Однако я обнаружил, что сгенерированные экземпляры ViewModel не используются совместно. Фактически они созданы как новые объекты. Что мне здесь не хватает?


person Renjith    schedule 11.11.2020    source источник


Ответы (1)


Я считаю, что вам нужно использовать stateSharedViewModel (вместо stateViewModel, которые у вас сейчас есть)

person John O'Reilly    schedule 11.11.2020