android - 如何拥有 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) | |
| | | |
| \----------------------/ |
| |
\--------------------------/
解决方案
然后我们没有找到任何解决方案来拥有单独的 ViewModel 实例。
推荐阅读
- sql - 如何找出在指定时间后更改了哪些表
- rust - 如何将服务器地址等配置传递给 Rust 测试?
- ios - 更新 Firebase 后,无法在 swift 项目上找到“InstanceID”和“InstanceIDTokenHandler”
- c# - 当前上下文中不存在名称“断言”
- facebook - Admob 中介失败
- reactjs - 登录时出错传递响应并捕获两个响应,未捕获(承诺中)TypeError:无法读取未定义的属性“数据”
- angular - 循环删除?角
- forms - 在表单(实体类型输入)上使用 Symfony4 进行的功能测试不起作用
- android - Jetpack Compose 中的 lineSpacing
- wordpress - 不显示结果内容 - 自定义类型