I'm following the new Dagger2 support for android to implement a movies list sample application and below is my use case.
- Activity Holds a fragment used to load list of movies
- Fragment uses a presenter to hit an api using retrofit
- Presenter has a dependency to the API interface class which contains Observale for the movies
I'm using @Inject inside the presenter for the ApiService interface but i got an error that i cannot use @Inject field without declaring provide annotation and below is my code
and finally the api service interface
So how can i provide the service interface to MoviesModule in order to work properly inside the presenter
The error is
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)