package Ġ ere vac ation . com . user list _ navigation . basic Ċ Ċ import Ġandroid . databinding . Data Binding Util Ċ import Ġandroid . databinding . ViewData Binding Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . content . Loader Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġdagger . android . Android Injection Ċ import Ġdagger . android . Android Injector Ċ import Ġdagger . android . Dispatch ing Android Injector Ċ import Ġdagger . android . support . Has Support Fragment Injector Ċ import Ġ ere vac ation . com . user list _ navigation . basic . ar h itecture . Vi per Contract Ċ import Ġ ere vac ation . com . user list _ navigation . basic . ar h itecture . Vi per Presenter Loader Ċ import Ġjavax . inject . Inject Ċ Ċ abstract Ġclass ĠBasic Activity Ġ< P Ġ: ĠV iper Contract . Presenter , ĠB : ĠView Data Binding > Ġ: ĠAppCompatActivity (), ĠV iper Contract . View < P >, ĠHas Support Fragment Injector Ġ{ ĊĊĠĠĠ Ġprivate Ġval ĠLO ADER _ ID Ġ= Ġ 1 2 3 4 ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġfragment Dispatch ing Android Injector : ĠDispatch ing Android Injector < Fragment > ĊĊĠĠĠ Ġprotected Ġvar Ġloader : ĠLoader < P >? Ġ= Ġnull ĊĠĠĠ Ġprotected Ġvar Ġpresenter : ĠP ? Ġ= Ġnull ĊĠĠĠ Ġvar Ġbinding : ĠB ? Ġ= Ġnull ĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġlateinit Ġvar Ġlazy Pre z enter : Ġdagger . Lazy < P > ĊĊĠĠĠ Ġabstract Ġfun Ġget Layout Id (): Int ĊĊĠĠĠ Ġoverride Ġfun Ġon Loader Reset ( loader : ĠLoader < P >) Ġ{ ĊĠĠĠĠĠĠĠ Ġthis . presenter Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Loader ( id : ĠInt , Ġargs : ĠBundle ?): ĠLoader < P > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠV iper Presenter Loader < P >( application Context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonLoad Finished ( loader : ĠLoader < P >, Ġpres : ĠP ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( pres Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġlazy Pre z enter . get () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( loader Ġas ? ĠV iper Presenter Loader < P >) ?. presenter Ġ= Ġpresenter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter ?. view Attach ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġpres ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġbind Layout () ĊĠĠĠĠĠĠĠ Ġloader Ġ= Ġsupport Loader Manager . get Loader < P >( LOAD ER _ ID ) ĊĠĠĠĠĠĠĠ Ġif Ġ( loader Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport Loader Manager . init Loader ( LOAD ER _ ID , ĠsavedInstanceState , Ġthis ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter Ġ= Ġ( loader Ġas ? ĠV iper Presenter Loader < P >) ?. presenter ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpresenter ?. view Attach ( this ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġpresenter ?. view Detach () ĊĠĠĠĠĠĠĠ Ġbinding Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġsupport Fragment Injector (): ĠAndroid Injector < Fragment > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġfragment Dispatch ing Android Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġbind Layout (){ ĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , Ġget Layout Id ()) ĊĠĠĠ Ġ} Ċ Ċ } Ċ