我该如何从一个Activity中访问一个共享的ViewModel?

3

我有一个包含多个Fragment的活动,希望通过共享ViewModel在这些Fragment之间共享数据。但是,当我像在Fragment中那样初始化ViewModel时,它不起作用并显示错误信息。请问如何正确地访问ViewModel(如果可能)?

    val model : sharedViewModel by activityViewModels()

我尝试使用ViewModelProvider,但不知道如何正确使用它,因为我使用的是Kotlin编码。


"它显示了一个错误" -- 是什么错误?在活动中,您可以使用 by viewModels() 声明它。在片段中,您可以使用 by activityViewModels() 声明它。 - CommonsWare
哦天啊,如果那个能行的话,我要自己给自己打脸了,那真是一个“兄弟瞬间”!! - Yakin Wissem
2个回答

5
为了让共享一个Activity实例中的多个Fragment使用同一个ViewModel,这些Fragment可以使用by activityViewModels()属性委托。此委托返回一个作用域为该Activity的ViewModel。
如果你还想让该Activity与该ViewModel一起工作,该Activity可以使用更简单的by viewModels()属性委托进行声明。由于它与viewModels()相同,因此他们没有费心创建一个专门针对Activity的activityViewModels()

2

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接