我正在扩展AndroidViewModel以在ViewModel中获取应用程序上下文,但是现在我还想将一些参数传递给ViewModel。 谷歌搜索后,我知道我可以使用ViewModelProvider.Factory来获取MyViewModel的Parametrized构造函数,但是如何获取应用程序上下文。
谢谢。
答案 0 :(得分:1)
您将需要Application
中的ViewModel.Factory
来实例化AndroidViewModel
。
要实现这一目标
getApplicationContext()
并将其强制转换为Application
。如果只是片段,您可以获取托管活动并从中获取应用程序。// Kotlin code
viewModel = ViewModelProviders.of(this,
ViewModel.Factory(activity?.application!!, param1, param2)) // from an fragment onViewCreated()
Application
类,请公开一种获取应用程序实例的方法。// JAVA code
public static Application getApp() {
return YourApplication.instance; // instance will be an static field in Application class
}
答案 1 :(得分:0)
从您的活动中,您可以使用:
科特琳:
applicationContext
Java:
getApplication().getApplicationContext()