我有一個注入Presenter的MainActivity,Presenter對象注入交互器和交互器對象注入APIHelper。 MainModule中有演示者,交互者和APIHelper的所有提供者。Dagger2不能一直解決依賴關係
@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這樣的:
DaggerMainActivityComponent.builder()
.mainActivityModule(new MainActivityModule(MainActivity.this))
.build().inject(this);
在我的演示實現我有相互作用分子,如:
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到匕首它應該可以解決所有的依賴關係。
您是否在Dagger組件中注入了演示者?否則我不認爲它會工作。一般來說,這個活動有一個@Inject Presenter p;主持人有迭代器或任何你想要注入的東西,注入他的構造函數中。因此,演示者構造函數將是MainPresenterImpl(activity,iterator)。並且Dagger會知道你在模塊中提供了迭代器的內容(不知道是否清楚) – Eselfar
看起來你缺少一些關於如何使用Dagger以及它如何工作的基礎知識。我建議您再次閱讀Dagger 2用戶指南或其他一些教程,並確保您瞭解如何提供或注入依賴 –
@Eselfar我已添加組件接口的代碼。我在組件中有一個主持人,它正在MainActivity中初始化,但是我在主持人內部注入的對象沒有像交互者和交互者中的交互者和apihelper一樣初始化 – ozmank