【问题标题】:How to access SharedPreferences in a ViewModel?如何在 ViewModel 中访问 SharedPreferences?
【发布时间】:2019-06-24 22:00:41
【问题描述】:

我正在使用 MVVM 开发一个 Android 应用程序。我需要在ViewModel 中访问SharedPreferences,但我不知道该怎么做。

我知道在继承AndroidViewModel 时可以访问上下文,但我想知道是否可以以及如何使用 DI 容器(Dagger 2)来访问。

【问题讨论】:

标签: android dagger-2 android-mvvm


【解决方案1】:

这是可能的。正如您所提到的,您的 ViewModel 必须扩展 AndroidViewModel 然后调用 getApplication() 并在访问 SharedPreferences 时将其用作上下文。

对于在ViewModel 中使用Dagger 2:您不能通过参数或字段注入直接在ViewModel 中注入任何东西,因为您需要使用ViewModel Factory 并在那里注入对象首先将它们传递给您想要的任何ViewModel


要了解更多关于将 Dagger 2ViewModels 结合使用的信息,请参阅this article


更新(2020-08-06):

可以在 ViewModels 中使用 Dagger 2 注入,请查看 Kotlin Clean Architecture 库示例了解如何使用它。

https://github.com/android10/Android-CleanArchitecture-Kotlin

【讨论】:

  • 基本上,您必须将视图模型工厂注入您的片段/活动,然后使用它来检索视图模型。我会推荐这种方式,而不是扩展 Android 视图模型。很好的答案
猜你喜欢
  • 1970-01-01
  • 2019-12-27
  • 1970-01-01
  • 2018-01-25
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多