Presenter를 주입하는 MainActivity가 있고, 발표자 객체가 상호 작용자를 삽입하고 상호 작용 객체가 APIHelper를 주입합니다. 발표자, 상호 작용자 및 APIHelper의 모든 공급자는 MainModule에 있습니다. 내가 좋아하는 인터랙을 내 발표자 구현에서Dagger2가 종속성을 완전히 해결하지 못함
DaggerMainActivityComponent.builder()
.mainActivityModule(new MainActivityModule(MainActivity.this))
.build().inject(this);
:
@Module
public class MainActivityModule {
private final MainActivity activity;
//Context context;
public MainActivityModule (MainActivity activity) {
this.activity = activity;
}
@Provides
@Singleton
public MainViewPresenter providesMainPresenter(){
return new MainPresenterImpl(activity);
}
@Provides
@Singleton
ListingInteractor providesInteractor(){
return new ListingInteractorImpl(activity);
}
@Provides
@Singleton
ApiHelper providesAPI(){
return new ApiHelper(activity);
}
}
나는 같은 MainActivity에서 구성 요소를 주입 한
public class MainPresenterImpl implements MainViewPresenter {
Context context;
private MainView mainView;
// @Inject
ListingInteractor interactor; //here i get null interactor
MyScrollListener scrollListener;
public MainPresenterImpl(MainActivity activity) {
this.context = activity;
this.mainView = activity;
}
@Override
public void getCatFacts() {
interactor.getFacts();
}
내 인터랙 구현 클래스는 그 생성자에 필요한 API 도우미가 있습니다 컨텍스트
public class ListingInteractorImpl implements ListingInteractor{
private Context context;
@Inject
private APIHelper; // getting null APIHelper
public ListingInteractorImpl(Context context) {
this.context = context;
}
내 컴포넌트 인터페이스 같은 것입니다 :
@Component(modules={MainActivityModule.class})
@Singleton
public interface MainActivityComponent {
void inject(MainActivity mainActivity);
/*void inject(MainPresenterImpl presenter);*/
MainViewPresenter getMainPresenter();
ListingInteractor getInteractor();
ApiHelper getHelper();
}
하지만 발표자 객체는 MainActivity에 인터랙, APIHelper는 모든 종속성을 해결해야 단검을 null.According되는 포함 발표자의 다른 모든 개체가 생성됩니다.
대거 구성 요소에 발표자를 삽입합니까? 그렇지 않으면 나는 그것이 효과가 있다고 생각하지 않는다. 일반적으로 활동에는 @Inject Presenter p가 있습니다. 그리고 발표자는 반복자 또는 당신이 주입하고자하는 것이 무엇이든지 그의 생성자에 주입합니다. 그러므로 표현 자 생성자는 MainPresenterImpl (activity, iterator)가 될 것입니다. 그리고 대거는 모듈에 iterator를 제공했는지 알 수 있습니다 (명확한 경우 donno) – Eselfar
대거를 사용하는 방법과 작동 방식에 대한 몇 가지 기본 사항이 누락 된 것처럼 보입니다. Dagger 2 Users Guide를 다시 읽거나 다른 자습서를 읽고 종속성을 제공하거나 주입하는 방법을 알고 있는지 확인하십시오. –
@Eselfar 구성 요소 인터페이스 용 코드를 추가했습니다. 발표자가 컴포넌트에 있지만 MainActivity에서 초기화되고 있지만 발표자 내부에 삽입 한 객체가 상호 작용자 및 apihelper와 같이 초기화되지 않았습니다. – ozmank