在此示例中,我一直尝试使用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编译了,那个烦人的错误消失了!我在做什么错了?
答案 0 :(得分:0)
正如David Medenjak正确指出的那样,问题与范围有关,事实证明我将ViewModelModule
包含在MainActivityModule
中,而不包含在AppModule
中,并且由于组件/子组件结构AppModule
不知道如何提供GithubViewModelFactory
,因为@Provides
位于子子组件内部。