【发布时间】:2018-03-03 20:41:57
【问题描述】:
我正在关注新的 Dagger2 对 android 的支持来实现电影列表示例应用程序,下面是我的用例。
- Activity 包含一个用于加载电影列表的片段
- Fragment 使用 Presenter 使用 Retrofit 访问 api
- Presenter 依赖于 API 接口类,其中包含电影的 Observale
我在演示器中为 ApiService 接口使用 @Inject,但我收到一个错误,即我无法在不声明提供注释的情况下使用 @Inject 字段,下面是我的代码
最后是api服务接口
那么我怎样才能为 MoviesModule 提供服务接口,以便在演示者内部正常工作
错误是
Error:(22, 8) error: [dagger.android.AndroidInjector.inject(T)] sampler.dagger.com.movieslist.data.MoviesApiService cannot be provided without an @Provides-annotated method.
sampler.dagger.com.movieslist.data.MoviesApiService is injected at
sampler.dagger.com.movieslist.movies.MoviePresenter.mApiService
sampler.dagger.com.movieslist.movies.MoviePresenter is injected at
sampler.dagger.com.movieslist.movies.MoviesModule.moviesPresenter(presenter)
sampler.dagger.com.movieslist.movies.MoviesContract.Presenter is injected at
sampler.dagger.com.movieslist.movies.MoviesFragment.mPresenter
dagger.Lazy<sampler.dagger.com.movieslist.movies.MoviesFragment> is injected at
sampler.dagger.com.movieslist.movies.MainActivity.mMoviesFragmentsProvider
sampler.dagger.com.movieslist.movies.MainActivity is injected at
dagger.android.AndroidInjector.inject(arg0)
【问题讨论】:
-
请附上代码而不是它的截图以及完整的错误信息。请查看how to fix cannot be provided
-
@DavidMedenjak 刚刚添加了完整的错误
-
请查看链接的问题,因为它包含有关您的错误和可能的解决方案的所有详细信息。您必须将
MoviesApiService添加到您的模块之一并提供它。
标签: android retrofit2 dagger-2 rx-android dagger