i've started using dagger 2 , i'm not sure if i'm doing things right ran in following complication:
let's have housemodule
initialized house
, windowmodule
initialized window
.
now have housefragment
supposed general information house. created housecomponent
including housemodule
.
so far good. there multiple nested housedetailsfragment
s within housefragment
(viewpager) show information house
, window
. created housedetailscomponent
including housemodule
, windowmodule
.
my dependency graph looks this:
// provides application wide dependencies (application context, sharedpref, repository,...) @component(modules = {applicationmodule.class}) public interface applicationcomponent { } // provides general activity dependencies (navigator,... ) @component(dependencies = applicationcomponent, modules = {activitycomponent.class}) public interface activitycomponent{ void inject(mainactivity mainactivity); } // provides house fragment specific dependencies (housepresenter,...) @component(dependencies = applicationcomponent, modules = {activitycomponent.class, housecomponent.class}) public interface housecomponent extends activitycomponent { void inject(housefragment fragment); } // provides house details fragment specific dependencies (housedetailspresenter,...) @component(dependencies = applicationcomponent, modules = {activitycomponent.class, housecomponent.class, windowcomponent.class}) public interface housedetailscomponent extends activitycomponent { void inject(housedetailsfragment detailsfragment); }
component creation becomes increasingly complex way , wonder how inject dependencies housefragment
, housedetailsfragment
s best. e.g. build housedetailscomponent
have following:
// casting omitted daggerhousedetailscomponent.builder() .applicationcomponent(getactivity().getapplication().getapplicationcomponent()) .activitymodule(getactivity().getactivitymodule()) .housemodule(getparentfragment().gethousemodule()) .windowmodule(new windowmodule(window)).build().inject(this);
i dislike knowledge (and casting) required parent fragments , activities. there simpler way achieve want do? other suggestions dependency graph?
also how show different house
in housefragment
? figured creating new housemodule
, swapping other out... how do that? there no accessors afaik.
i've been using submodules simplify hierarchy.
also dagger 2.11+ supports android , makes injections easier.
Comments
Post a Comment