【问题标题】:how can i access a shared view model from an activity?如何从活动访问共享视图模型?
【发布时间】:2021-09-04 23:10:47
【问题描述】:

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

    val model : sharedViewModel by activityViewModels()

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

【问题讨论】:

  • “它显示一个错误”——错误是什么?在活动中,您使用by viewModels() 声明它。在片段中,您使用by activityViewModels() 声明它。
  • 天哪,如果这行得通,我会面对手掌,那是一个残酷的时刻!
  • 它成功了,伙计@CommonsWare,谢谢你

标签: android kotlin android-fragments viewmodel


【解决方案1】:

要让一个公共活动实例中的多个片段共享一个视图模型,片段可以使用by activityViewModels() 属性委托。这会返回一个作用域为 Activity 的视图模型。

如果您希望活动与此视图模型一起工作,活动将使用更简单的by viewModels() 属性委托声明它。他们没有费心为活动创建activityViewModels(),因为它与更简单的viewModels() 相同。

【讨论】:

    【解决方案2】:

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

    活动使用viewModels<T>()

    片段使用activityViewModels<T>()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2018-02-26
      • 1970-01-01
      • 1970-01-01
      • 2014-02-22
      • 2018-06-24
      • 1970-01-01
      • 1970-01-01
      • 2019-10-03
      相关资源
      最近更新 更多