bob*_* ze 3 android android-viewmodel android-jetpack-compose dagger-hilt
我试图在两个地方获取视图模型,其中一个在 MainActivity 中使用:
val viewModel:MyViewModel by viewModels()
Run Code Online (Sandbox Code Playgroud)
另一个地方是在 compose 函数内部,使用:
val viewModel:MyViewModel = hiltViewModel()
Run Code Online (Sandbox Code Playgroud)
当我调试时,似乎那是两个不同的对象。无论如何,我可以在两个地方获得相同的对象吗?
尽管您在不需要视图模型的情况下解决了问题,但问题仍然没有得到解答,因此我发布此内容以防其他人发现它有帮助。
这个答案解释了如何共享视图模型范围以及如何覆盖它。
如果您使用导航组件,这应该会有所帮助。但是,如果您不想传递视图模型或覆盖提供的视图ViewModelStoreOwner模型,则可以在任何子可组合项中访问父活动的视图模型,如下所示。
val composeView = LocalView.current
val activityViewModel = composeView.findViewTreeViewModelStoreOwner()?.let {
hiltViewModel<MyViewModel>(it)
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3043 次 |
| 最近记录: |