我正在使用 MVVM 开发 Android 应用程序。我需要在 ViewModel
中访问 SharedPreferences
,但我不知道该怎么做。
我知道在继承 AndroidViewModel
时可以访问上下文,但我想知道这是否可能以及如何使用 DI 容器(Dagger 2)进行访问。
最佳答案
这是可能的。正如您提到的,您的 ViewModel
必须扩展 AndroidViewModel
然后调用 getApplication()
并在访问 SharedPreferences
时将其用作上下文.
在 ViewModel
中使用 Dagger 2:你不能通过参数或字段注入(inject)直接在 ViewModel
中注入(inject)任何东西,因为你将需要使用 ViewModel Factory
并首先在那里注入(inject)对象,然后将它们传递给您想要的任何 ViewModel
。
要了解有关将 Dagger 2 与 ViewModels
结合使用的更多信息,请参阅 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/