为什么在ViewModelProvider.Factory实现中添加@Singleton批注会导致编译错误[Dagger / MissingBinding]?

时间:2018-10-04 03:52:22

标签: java android kotlin dagger-2

在此示例中,我一直尝试使用Dagger2注入ViewModelProvider.Factory实现:GithubBrowserExample我复制了完全相同的类,但是,当我尝试构建时,出现以下错误:

error: [Dagger/MissingBinding] [dagger.android.AndroidInjector.inject(T)] java.util.Map<java.lang.Class<? extends android.arch.lifecycle.ViewModel>,javax.inject.Provider<android.arch.lifecycle.ViewModel>> cannot be provided without an @Provides-annotated method.

我花了2天的时间来寻找解决方案,所有内容都与通配符有关,并使用了我在课堂上已经使用过的@JvmSuppressWildcards注释,我还尝试将{{1 }}中的构造函数签名,只是得到同样令人沮丧的错误,直到我不小心从以下位置删除了Map

MutableMap

然后,我的proyect编译了,那个烦人的错误消失了!我在做什么错了?

1 个答案:

答案 0 :(得分:0)

正如David Medenjak正确指出的那样,问题与范围有关,事实证明我将ViewModelModule包含在MainActivityModule中,而不包含在AppModule中,并且由于组件/子组件结构AppModule不知道如何提供GithubViewModelFactory,因为@Provides位于子子组件内部。

相关问题