获取ViewModel ViewModelProvider.Factory和应用程序上下文

时间:2019-06-03 18:57:48

标签: android mvvm viewmodel android-jetpack android-viewmodel

我正在扩展AndroidViewModel以在ViewModel中获取应用程序上下文,但是现在我还想将一些参数传递给ViewModel。 谷歌搜索后,我知道我可以使用ViewModelProvider.Factory来获取MyViewModel的Parametrized构造函数,但是如何获取应用程序上下文。

谢谢。

2 个答案:

答案 0 :(得分:1)

您将需要Application中的ViewModel.Factory来实例化AndroidViewModel

要实现这一目标

  • 如果要在“活动/片段”中实例化ViewModel,请执行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()