android - 如何访问 ViewModel 中的 SharedPreferences?

标签 android dagger-2 android-mvvm

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

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

最佳答案

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

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


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


更新 (2020-08-06):

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

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

关于android - 如何访问 ViewModel 中的 SharedPreferences?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54460634/

相关文章:

android - 在添加底部导航时在工具栏顶部获得不必要的空间

java - kotlin dagger改造现场注入(inject)

android - 带有 RxJava 的 MVVM,没有数据绑定(bind)

android - 如何使用BindingAdapter和android Mvvm在edittext中显示日期并通过datepicker更新日期

android - 如何在 android API <21 中检查省电模式

android - 从android中的包中检索数据

java - Dagger2 自定义@Qualifier 用法

android - 在 ViewModel 之间共享数据

Android Retrofit session - cookie

java - Dagger 中字符串被多次绑定(bind)