Реализация подкомпонентов dagger2

#android #android-fragments #mvp #dagger-2

#Android #android-фрагменты #mvp #кинжал-2

Вопрос:

я пытаюсь применить концепции MVP, используя dagger2, следуя этому репозиторию Google на Github. у меня есть экран-заставка с несколькими фрагментами. я создал первый фрагмент заставки с использованием MVP

и есть его класс component

 @AScoped
@Component(dependencies = DataRepoComponent.class,modules = SplashScreenModule.class)
public interface SplashScreenComponent {
    void inject(SplashScreenActivity splashScreenActivity);
}
  

этот класс компонента зависит от компонента поставщика данных, называемого DataRepoComponent

 @Singleton
@Component(modules = {DataRepoModule.class, ApplicationModule.class})
public interface DataRepoComponent {
    DataRepo getDataRepo();
}
  

и ниже приведен модуль репозитория данных

 @Module
public class DataRepoModule {
    @Singleton
    @Provides
    OperatorHelper provideSharedPreferncesHelper(Context context){
        return new OperatorHelper(context);
    }


    @Singleton
    @Provides
    SharedPreferences provideSharedPreference(Context context){
        return PreferenceManager.getDefaultSharedPreferences(context);
    }
}
  

и все работает просто отлично до этого, когда я пытаюсь добавить фрагмент экрана заставки пыльника, давайте назовем его FirstSplashScreenFragment,
когда я добавляю такой компонент

 @AScoped
@Component(dependencies = DataRepoComponent.class, modules = FirstSplashScreenModule.class)
public interface FirstSplashScreenComponent {
    void inject(SplashScreenActivity splashScreenActivity);

}
  

я получаю следующие ошибки
1 —

Ошибка: (5, 49) ошибка: не удается найти класс символов DaggerDataRepoComponent

не может быть предоставлен без @Proides-аннотированный метод

Ответ №1:

Честно говоря, действительно сложно выяснить вашу проблему, потому что некоторые части вашей головоломки отсутствуют, но я думаю, это может помочь:

добавьте это в свой DataRepoComponent:

 @Singleton
@Provides
DataRepo provideDataRepo(){
    return new DataRepo();
}
  

кстати, я думаю, что просмотр этого примера репозитория может помочь вам лучше познакомиться с dagger:

http://github.com/mmirhoseini/fyber_mobile_offers