Skip to content Skip to sidebar Skip to footer

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?"