J'ai une MainActivity qui injecte Presenter, un objet presenter injecte interacteur et un objet interacteur injecte APIHelper. Tous les fournisseurs de présentateur, interacteur et APIHelper sont là dans MainModule.Dagger2 ne résolvant pas complètement la dépendance
@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);
}
}
J'ai injecté le composant dans le MainActivity comme:
DaggerMainActivityComponent.builder()
.mainActivityModule(new MainActivityModule(MainActivity.this))
.build().inject(this);
Dans ma mise en œuvre Présentateur Je interacteur comme:
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();
}
Ma interacteur classe d'implémentation a helper API dont les besoins constructeur contexte
public class ListingInteractorImpl implements ListingInteractor{
private Context context;
@Inject
private APIHelper; // getting null APIHelper
public ListingInteractorImpl(Context context) {
this.context = context;
}
Mon interface composant est comme:
@Component(modules={MainActivityModule.class})
@Singleton
public interface MainActivityComponent {
void inject(MainActivity mainActivity);
/*void inject(MainPresenterImpl presenter);*/
MainViewPresenter getMainPresenter();
ListingInteractor getInteractor();
ApiHelper getHelper();
}
mais seul objet présentateur est créé dans le MainActivity tous les autres objets, y compris le présentateur interacteur, apihelper sont null.According à Dagger il faut résoudre toutes les dépendances.
Injectez-vous le présentateur dans votre composant Dagger? Sinon, je ne pense pas que ça va marcher. Généralement, l'activité a un @Inject Presenter p; et le présentateur a l'itérateur ou tout ce que vous voulez lui injecter, injecté dans son constructeur. Le constructeur du présentateur sera donc MainPresenterImpl (activité, itérateur). Et Dagger saura quoi injecter avez-vous fourni l'itérateur dans le module (donno si c'est clair) – Eselfar
Il semble qu'il vous manque quelques bases sur l'utilisation de Dagger et comment cela fonctionne. Je vous recommande de lire à nouveau le Dagger 2 Users Guide, ou d'autres didacticiels, et de vous assurer que vous comprenez comment approvisionner ou injecter des dépendances. –
@Eselfar J'ai ajouté du code pour l'interface du composant. J'ai présentateur dans le composant et il est initialisé dans MainActivity mais les objets que j'injecte dans le présentateur ne sont pas initialisés comme l'interacteur et l'apihelper dedans interacteur – ozmank