[英]Get ViewModel ViewModelProvider.Factory and Application Context
I am extending AndroidViewModel to get an application context in my ViewModel but Now I also want to pass some parameters to my ViewModel. 我正在扩展AndroidViewModel以在ViewModel中获取应用程序上下文,但是现在我也想将一些参数传递给ViewModel。 After some google search, I came to know that I can use ViewModelProvider.Factory to get Parametrized constructor of my MyViewModel but how to get an application context. 经过一些谷歌搜索,我知道我可以使用ViewModelProvider.Factory来获取MyViewModel的Parametrized构造函数,但是如何获取应用程序上下文。
Thanks in advance. 提前致谢。
You would need an Application
in ViewModel.Factory
to instantiate an AndroidViewModel
. 您将需要一个ViewModel.Factory
的Application
来实例化一个AndroidViewModel
。
Ways to achieve this 实现此目的的方法
getApplicationContext()
and cast it as Application
. 如果要在Activity / Fragment中实例化ViewModel,请执行getApplicationContext()
并将其getApplicationContext()
为Application
。 If in fragment you can get the hosting Activity and get Application from it. 如果不完整,您可以获取托管活动并从中获取应用程序。 // Kotlin code
viewModel = ViewModelProviders.of(this,
ViewModel.Factory(activity?.application!!, param1, param2)) // from an fragment onViewCreated()
Application
class expose an method to get an application instance. 如果您的应用程序具有Application
类,则公开一个方法来获取应用程序实例。 // JAVA code
public static Application getApp() {
return YourApplication.instance; // instance will be an static field in Application class
}
From your activity you can use: 从您的活动中,您可以使用:
Kotlin: 科特林:
applicationContext
Java: Java的:
getApplication().getApplicationContext()
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.