简体   繁体   English

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

[英]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.FactoryApplication来实例化一个AndroidViewModel

Ways to achieve this 实现此目的的方法

  • if you are instantiating the ViewModel in your Activity/Fragment then do 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()
  • if your app has an 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.

相关问题 ViewModelProvider.Factory 总是返回一个视图模型 - ViewModelProvider.Factory always return one viewmodel 为什么为我的viewModel类实现ViewModelProvider.Factory很重要? - Why it is important to implement a ViewModelProvider.Factory for my viewModel class? 匕首2 viewmodels和ViewModelProvider.Factory - dagger 2 viewmodels and ViewModelProvider.Factory 将ViewModelProvider.Factory的提供程序注入espresso测试 - Inject provider of ViewModelProvider.Factory into esspresso test 如何将 ViewModelProvider.Factory 注入片段 - How to inject ViewModelProvider.Factory into a fragment Dagger 2 ViewModelProvider.Factory绑定多次 - Dagger 2 ViewModelProvider.Factory bound multiple times ViewModelProvider.Factory 和 ViewModelProvider.NewInstanceFactory 有什么区别? - What are the differences between ViewModelProvider.Factory and ViewModelProvider.NewInstanceFactory? 使用Android上的Dagger和Java,ViewModelProvider.Factory在片段上保持为空 - ViewModelProvider.Factory remains null on fragment using Dagger and Java on Android Dagger2,在依赖组件中为 ViewModelProvider.Factory 添加绑定 - Dagger2, adding a binding for ViewModelProvider.Factory in a dependant component 执行 ViewModelProvider.Factory 并且我收到空指针异常 - Impementing a ViewModelProvider.Factory and I am getting a null pointer exeception
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM