Я пытаюсь создать простое приложение с модификацией 2, кинжалом 2 и MVP, но я борюсь с зависимостями, актуальными, это ошибка, которую я получаю после того, как я попытаюсь перестроить project Ошибка: выполнение выполнено для задачи ': app: compileDebugJavaWithJavac'.Кинжал 2 не может разрешить символ «DaggerAppComponent»
java.lang.StackOverflowError
, а также в App классе, где я обеспечиваю AppComponent: не может разрешить символ «DaggerAppComponent»
Я постараюсь показать вам, что мой проект выглядит так кто-то может увидеть проблему, первый из них является мой AppModule, который включает в себя PresentationModule.class
@Module(includes = PresentationModule.class)
public class AppModule {
private App app;
public AppModule(App app) {
this.app = app;
}
@Provides
@Singleton
public App provideApp() {
return app;
}
}
Презентация модуля выглядит следующим образом:
@Module(includes = InteractorModule.class)
public class PresentationModule {
@Provides
JokePresenter providePresenter(JokeInteractor jokeInteractor) {
return new JokePresenterImpl(jokeInteractor);
}
}
И InteractorModule:
@Module(includes = {NetworkModule.class, PresentationModule.class})
public class InteractorModule {
@Provides
JokeInteractor provideJokeInteractor(RetrofitService service, JokePresenter presenter) {
return new JokeInteractorImpl(service, presenter);
}
}
Это JokePresenter, что есть ссылка для просмотра и Interactor:
public class JokePresenterImpl implements JokePresenter {
private JokeView mJokeView;
private List<String> mData = new ArrayList<>();
private String mJoke;
private JokeInteractor jokeInteractor;
public JokePresenterImpl(JokeInteractor jokeInteractor) {
this.jokeInteractor = jokeInteractor;
}
@Override
public void setView(JokeView view) {
this.mJokeView = view;
}
@Override
public void getRandomJoke() {
mJokeView.showProgress();
jokeInteractor.getRandomJoke();
}
}
И JokeInteractor, что имеет RetrofitService и JokePresenter ссылки:
public class JokeInteractorImpl implements JokeInteractor {
private RetrofitService retrofitService;
private JokePresenter presenter;
public JokeInteractorImpl(RetrofitService service, JokePresenter presenter) {
this.retrofitService = service;
this.presenter = presenter;
}
@Override
public void getRandomJoke() {
retrofitService.getRandomJoke()
.subscribeOn(Schedulers.io())
.observeOn(AndroidSchedulers.mainThread())
.subscribe(new Observer<RandomJokeResponse>() {
@Override
public void onCompleted() {
presenter.onRandomJokeCompleted();
}
@Override
public void onError(Throwable e) {
presenter.onError(e.getMessage());
}
@Override
public void onNext(RandomJokeResponse randomJokeResponse) {
presenter.onNextRandomJoke(randomJokeResponse);
}
});
}
Gradle зависимостей :
apt 'com.google.dagger:dagger-compiler:2.7'
compile 'com.google.dagger:dagger:2.7'
provided 'javax.annotation:jsr250-api:1.0'
//retrofit
compile 'com.squareup.retrofit2:retrofit:2.1.0'
compile 'com.squareup.okhttp:okhttp:2.5.0'
compile 'com.squareup.retrofit2:converter-gson:2.1.0'
compile 'com.squareup.retrofit2:adapter-rxjava:2.1.0'
//rx java
compile 'io.reactivex:rxjava:1.1.6'
compile 'io.reactivex:rxandroid:1.2.1'
//dagger2
compile 'com.google.dagger:dagger:2.0'
provided 'org.glassfish:javax.annotation:10.0-b28'
Может ли кто-нибудь увидеть проблему здесь?
ли вы создать компонент интерфейс, который обрабатывает инъекции? Если нет, сообщите мне, и я счастлив привести пример. – jch000
Вы должны показать свои зависимости от градиента – EpicPandaForce
Да, у меня есть компонентный интерфейс с AppModule и методы, в которых презентатор вводится void inject (приложение App); void inject (активность JokeActivity); void inject (активность JokeListActivity); void inject (диалог JokeDialog); – joe