개조 2, 단검 2 및 MVP가있는 간단한 앱을 만들려고합니다.하지만 실제로는 의존성으로 인해 어려움을 겪고 있습니다. 다시 작성하려고하면 오류가 발생합니다. 프로젝트 오류 : ': app : compileDebugJavaWithJavac'작업 실행에 실패했습니다.단검 2는 심볼 'DaggerAppComponent'를 해결할 수 없습니다.
java.lang.StackOverflowError
또한 내가 AppComponent을 제공하는 앱 클래스 : 해결할 수없는 기호 'DaggerAppComponent'가
가 내가 그렇게 사람이 문제를 볼 수 있습니다처럼 내 프로젝트는 모습을 보여하려고합니다, 먼저 하나입니다 PresentationModule.class을 포함 내 AppModule
@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 :
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을 종속하십시오 RetrofitService 및 JokePresenter 참조가
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 :
@Module(includes = {NetworkModule.class, PresentationModule.class})
public class InteractorModule {
@Provides
JokeInteractor provideJokeInteractor(RetrofitService service, JokePresenter presenter) {
return new JokeInteractorImpl(service, presenter);
}
}
이 도면을 참조하면과 인터랙을 갖는다 JokePresenter 인 :
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
당신의 gradle 의존성을 보여줘야합니다 – EpicPandaForce
예, 저는 AppModule을 가진 컴포넌트 인터페이스와 발표자가 void injection (App app)으로 주입되는 메소드를 가지고 있습니다; void inject (JokeActivity activity); void inject (JokeListActivity activity); void inject (JokeDialog 대화 상자); – joe