首页 > 解决方案 > 如何拥有 2 个参数化 sharedViewModel 实例?

问题描述

val viewModel: StuffViewModel by sharedViewModel { parametersOf(arguments.id) }

现在,当我有同一个 Fragment 类的多个实例时,我怎样才能为每个实例创建新实例?我以为是parametersOf()这样,但似乎不是真的。

是的,它必须是sharedViewModel,因为某些逻辑会导致一些复杂的片段操作,并且视图模型绑定到服务,并且只拥有共享实例而不是每次都重新创建它们并重新绑定服务似乎是一个更好的主意。

我想要的是:

/---------Activity---------\
|                          |
|     StuffViewModel(1)    |
|     StuffViewModel(2)    |
|                          |
| /---StuffFragment(1)---\ |
| |                      | |
| |  *StuffViewModel(1)  | |
| |                      | |
| \----------------------/ |
|                          |
| /---StuffFragment(2)---\ |
| |                      | |
| |  *StuffViewModel(2)  | |
| |                      | |
| \----------------------/ |
|                          |
\--------------------------/

我得到什么:

/---------Activity---------\
|                          |
|     StuffViewModel(1)    |
|                          |
| /---StuffFragment(1)---\ |
| |                      | |
| |  *StuffViewModel(1)  | |
| |                      | |
| \----------------------/ |
|                          |
| /---StuffFragment(2)---\ |
| |                      | |
| |  *StuffViewModel(1)  | |
| |                      | |
| \----------------------/ |
|                          |
\--------------------------/

标签: androidandroid-viewmodelkoin

解决方案


然后我们没有找到任何解决方案来拥有单独的 ViewModel 实例。


推荐阅读