android– 如何使用依赖注入在ViewModel中注入构造函数

android– 如何使用依赖注入在ViewModel中注入构造函数,第1张

概述我试图在https://developer.android.com/jetpack/docs/guide上实现这个例子.这解释了如何构建tanandroid应用程序.当我使用相同的代码时,我得到以下错误.java.lang.Class<com.example.UserProfileViewModel>hasnozeroargumentconstructor我可以弄清楚这个错误与之有关

我试图在https://developer.android.com/jetpack/docs/guide上实现这个例子.这解释了如何构建tan androID应用程序.

当我使用相同的代码时,我得到以下错误.

java.lang.class<com.example.UserProfileviewmodel> has no zero argument constructor

我可以弄清楚这个错误与之有关

viewmodel = viewmodelProvIDers.of(this).get(UserProfileviewmodel.class);

当我为viewmodel编写默认的零输入构造函数时,我收到以下错误.

Attempt to invoke virtual method 'voID androID.arch.lifecycle.liveData.observe(androID.arch.lifecycle.lifecycleOwner, androID.arch.lifecycle.Observer)' on a null object reference

我无法弄清楚这个错误的原因以及如何解决它.

解决方法:

如果你想在你的Fragment中提供带有构造函数的viewmodel作为依赖项,那么有一种不同的方法,

让我们假设您有一个viewmodel类,如下所示,

class SampleVIEwmModel(dataManager:DataManager):viewmodel(){  //some logic}

然后你需要创建一个工厂类来支持上面的viewmodel,如下所示,

class SampleFactory @Inject constructor(var dataManager:DataManager): viewmodelProvIDer.Factory {overrIDe fun <T : viewmodel?> create(modelClass: Class<T>): T {    if (modelClass.isAssignableFrom(Sampleviewmodel::class)) {        return Sampleviewmodel(dataManager) as T    }    throw IllegalStateException()}

}

现在在你的模块类中,你可以按如下方式注入上面的类,(Note-Datamanager类是可注入的)

//ProvIDe Factory@ProvIDesfun provIDeFactory(dataManager:DataManager): SampleFactory {    return SampleFactory(dataManager)}//ProvIDe actual viewmodel@ProvIDesfun provIDeviewmodel(sampleFactory: SampleFactory): Sampleviewmodel {    return viewmodelProvIDers.of(fragment, sampleFactory)[Sampleviewmodel::class]}

在你的Fragment中没有,你可以像任何其他依赖一样注入你的viewmodel,

@Injetctlateinit viewmodel:Sampleviewmodel
总结

以上是内存溢出为你收集整理的android – 如何使用依赖注入在ViewModel中注入构造函数全部内容,希望文章能够帮你解决android – 如何使用依赖注入在ViewModel中注入构造函数所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/web/1101033.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-05-28
下一篇 2022-05-28

发表评论

登录后才能评论

评论列表(0条)

保存