无法在 Koin 2.1.6 中使用共享状态 ViewModel
Unable to use shared state ViewModel in 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()
我在 UserFragment
上使用这个 ViewModel
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 实例没有被共享。事实上,它们是作为新对象创建的。这里有什么我遗漏的吗?
我认为您需要使用 stateSharedViewModel
(而不是您现在拥有的 stateViewModel
)
我在我的应用程序模块中使用 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()
我在 UserFragment
ViewModel
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 实例没有被共享。事实上,它们是作为新对象创建的。这里有什么我遗漏的吗?
我认为您需要使用 stateSharedViewModel
(而不是您现在拥有的 stateViewModel
)