How To Inject Dependencies Into Any Kind Of Object With Dagger2?
According to http://konmik.github.io/snorkeling-with-dagger-2.html i could just add inject(Anything anything) into AppComponent.java, but this doesn't work for me, in the article
Solution 1:
Inject child fragments instead of BaseFragment
. In your case:
publicclassListFragmentextendsBaseFragment {
@Inject ListFragmentPresenterImpl listFragmentPresenter;
publicstatic ListFragment newInstance(){
ListFragmentresult=newListFragment();
return result;
}
@OverridepublicvoidonCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
((MainActivity)getActivity()).getComponent().injectFragment(this);
}
@Overridepublic View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
super.onCreateView(inflater, container, savedInstanceState);
ViewrootView= inflater.inflate(R.layout.list_fragment, container, false);
Log.d("",listFragmentPresenter.sayHello()); // NPE HEREreturn rootView;
}
}
And in your Component class:
@AScope@Component(dependencies = ApplicationComponent.class,
modules = ActivityModule.class)interfaceActivityComponent {
voidinjectActivity(MainActivity activity);
voidinjectFragment(ListFragment fragment);
// Put any more injects here, if BaseFragment has// any other children that need to be injected, for example:voidinject(MapFragment fragment);
voidinject(DetailFragment fragment);
}
Parent -> Child injection is not working in Dagger 2. It was covered here, here and this SO question.
Post a Comment for "How To Inject Dependencies Into Any Kind Of Object With Dagger2?"