如何从 activity 访问共享视图模型?

how can i access a shared view model from an activity?

我有一个 activity,里面有很多片段,我想在片段之间使用共享视图模型来共享东西,但是当我按照片段中的方式初始化它时,它不起作用, 它显示错误,如果可能的话,正确的访问方式是什么?

    val model : sharedViewModel by activityViewModels()

我尝试过使用 ViewModelProvider 但不知道如何正确使用,因为我正在使用 kotlin 进行编码

要让一个公共 activity 实例中的多个片段共享一个视图模型,片段可以使用 by activityViewModels() 属性 委托。此 returns 范围为 activity 的视图模型。

如果您希望activity使用此视图模型,activity将使用更简单的by viewModels()声明它属性代表。他们没有为 activity 创建 activityViewModels(),因为它与更简单的 viewModels().

相同

我建议您阅读 Share data between fragments 文档

Activity 使用 viewModels<T>()

碎片使用activityViewModels<T>()