Good afternoon, I understand the library dagger2 and I can not understand where I have a mistake, I apologize if the question is simple, but I could not yet find the answer. The error is this:
Error:(12, 10) error: android.content.Context cannot be provided without an @Provides-annotated method. android.content.Context is injected at com.example.pashko00710.cyberplattest.ui.recyclerview.NewsAdapter.<init>(context, …) com.example.pashko00710.cyberplattest.ui.recyclerview.NewsAdapter is injected at com.example.pashko00710.cyberplattest.ui.MainActivity.newsAdapter com.example.pashko00710.cyberplattest.ui.MainActivity is injected at com.example.pashko00710.cyberplattest.injection.components.ActivityComponent.inject(mainActivity)
Component Code:
@Singleton @Component(modules = ApplicationModule.class) public interface ApplicationComponent { @ApplicationContext Context context(); Application application(); ActivityComponent addActivityComponent(ActivityModule activityModule); DbHelper providesDbHelper(); DataManager providesDataManager(); void inject(LoadNewsService loadNewsService); } @PerActivity @Component(dependencies = ApplicationComponent.class,modules = ActivityModule.class) public interface ActivityComponent { void inject(MainActivity mainActivity); }
Module code:
@Module public class ActivityModule { private Activity activity; public ActivityModule(Activity activity) { this.activity = activity; } @Provides @NonNull Activity providesActivity() { return activity; } @Provides @NonNull @ActivityContext Context providesContext() { return activity; } } @Module public class ApplicationModule { private final Application application; public ApplicationModule(Application application) { this.application = application; } @Provides @NonNull Application providesApplication() {return application;} @Provides @NonNull @ApplicationContext Context providesContext() {return application;} }
Qualifier code:
@Qualifier @Retention(RetentionPolicy.RUNTIME) public @interface ActivityContext { } @Qualifier @Retention(RetentionPolicy.RUNTIME) public @interface ApplicationContext { }
And scope:
@Scope @Retention(RetentionPolicy.RUNTIME) public @interface PerActivity { }