#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: