【发布时间】:2020-03-24 00:58:04
【问题描述】:
嗨,当我尝试在以下类中注入我的 Doa 接口时,我正在使用 mvvm 和 dagger2
@Singleton
class PodCastRepository @Inject constructor(private val dao: PodCastDao) {
}
我的接口类
interface PodCastDao {
fun getLegoThemes(): LiveData<PodCast>
}
我收到以下错误
错误:[Dagger/MissingBinding] in..myapplication.podcast.data.PodCastDao 无法提供 没有 @Provides 注释的方法。公共抽象接口 应用组件 { ^ 在..myapplication.podcast.data.PodCastDao 被注入 在..myapplication.podcast.data.PodCastRepository(dao) in..myapplication.podcast.data.PodCastRepository 被注入 在..myapplication.podcast.PodCastViewModel(存储库) in..myapplication.podcast.PodCastViewModel 被注入 在..myapplication.di.ViewModelModule.bindThemeViewModel(viewModel) java.util.Map,javax.inject.Provider> 被注射在 在..myapplication.di.ViewModelFactory(创作者) in..myapplication.di.ViewModelFactory 注入于 在..myapplication.di.ViewModelModule.bindViewModelFactory(工厂) androidx.lifecycle.ViewModelProvider.Factory 在注入 在..myapplication.podcast.PodcastFragment.viewModelFactory in..myapplication.podcast.PodcastFragment 被注入 dagger.android.AndroidInjector.inject(T) [in..myapplication.di.AppComponent → 在..myapplication.di.MainActivityModule_ContributeMainActivity.MainActivitySubcomponent → 在..myapplication.di.FragmentBuildersModule_ContributeThemeFragment.PodcastFragmentSubcomponent]
请帮我解决这个问题,我是 dagger 的新手,我也在使用 kotlin 和 mvvm
【问题讨论】:
-
需要先提供数据库。然后在您为 dao 提供的方法中返回 dao。
-
首先dagger不能提供接口。由于不会创建Interface的实例,您必须提供实现,让dagger知道如何创建实例或自己创建实例。
标签: android kotlin mvvm dagger-2 android-mvvm