首页 > 解决方案 > 使用 Dagger 2 将 ViewModel 注入 Fragment,并带有参数

问题描述

我正在尝试使用单个工厂来创建带有构造函数参数的 ViewModel。我遵循了@matejdro https://github.com/google/dagger/issues/1273公开的匕首问题之一中的建议

但是注射不起作用。

我收到一个错误:“错误:[Dagger/MissingBinding] kotlin.Lazy 不能在没有 @Provides-annotated 方法的情况下提供。”

知道如何解决这个问题吗?我将创建的项目上传到 github:https ://github.com/davida5/daggerViewModelBestPractice

标签: androidviewmodeldagger

解决方案


这很简单,你应该使用dagger.Lazy(包括一个导入)而不是kotlin.Lazy

一旦解决了这个问题,您将遇到另一个问题;AFAIK 如果没有相应的合格提供者,您将无法使用合格的依赖项。您有一个合格的UserManager实例被注入AccountsViewModel. 添加合格的提供者方法或从AccountsViewModel.


推荐阅读