【问题标题】:Get ViewModel ViewModelProvider.Factory and Application Context获取 ViewModel ViewModelProvider.Factory 和应用程序上下文
【发布时间】:2019-10-19 08:20:08
【问题描述】:

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

提前致谢。

【问题讨论】:

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


    【解决方案1】:

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

    实现这一目标的方法

    • 如果您在 Activity/Fragment 中实例化 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
        }
    

    【讨论】:

    • 我们可以使用 androidx.activity.app.viewModels 吗?
    【解决方案2】:

    从您的活动中,您可以使用:

    科特林:

    applicationContext
    

    Java:

    getApplication().getApplicationContext()
    

    【讨论】:

      猜你喜欢
      • 2022-01-02
      • 2011-10-31
      • 2010-09-12
      • 1970-01-01
      • 2014-03-26
      • 1970-01-01
      • 1970-01-01
      • 2012-07-25
      • 1970-01-01
      相关资源
      最近更新 更多