【问题标题】:Injecting ViewModel into the Fragment with Dagger 2, with parameters使用 Dagger 2 将 ViewModel 注入 Fragment,并带有参数
【发布时间】:2019-12-17 20:44:46
【问题描述】:

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

但是注入不起作用。

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

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

【问题讨论】:

  • 您也应该使用 Provider 而不是 Lazy(请参阅链接的 github 线程中的 cmets)。

标签: android viewmodel dagger


【解决方案1】:

这很简单,您应该使用dagger.Lazy(包括它的导入)而不是kotlin.Lazy

一旦修复,您将遇到另一个问题; AFAIK 如果没有相应的合格提供者,您将无法使用合格的依赖项。您有一个合格的UserManager 实例被注入AccountsViewModel。添加合格的提供者方法或从AccountsViewModel 中删除限定条件。

【讨论】:

  • 这太棒了。它消除了所有复杂性,并且不需要工厂。但是,这有什么缺点,我们以后要牢记在心?
  • 好问题。我自己还没有在一个相当大的项目上使用这种方法。在小型项目中它非常易于管理,但我不知道它会如何转化为具有大量视图模型的项目。
猜你喜欢
  • 2021-02-23
  • 1970-01-01
  • 1970-01-01
  • 2018-02-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-03-08
  • 2018-12-08
相关资源
最近更新 更多