package Ġcom . mon on z . skeleton Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . lifecycle . LiveData Ċ import Ġandroidx . lifecycle . Observer Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġcom . mon on z . skeleton . databinding . Main Binding Ċ import Ġcom . mon on z . skeleton . extensions . setup With Nav Controller Ċ import Ġcom . mon on z . skeleton . injection . Fragment Injection Factory Ċ import Ġdagger . android . Android Injection Ċ import Ġdagger . android . Android Injector Ċ import Ġdagger . android . Dispatch ing Android Injector Ċ import Ġdagger . android . Has Android Injector Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠHas Android Injector Ġ{ ĊĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġandroid Injector : ĠDispatch ing Android Injector < Any > ĊĠĠĠ Ġ@ Inject Ġlateinit Ġvar Ġfragment Factory : ĠFragment Injection Factory ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġbinding : ĠMain Binding ĊĊĠĠĠ Ġprivate Ġvar Ġnav Controller : ĠLive Data < Nav Controller >? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠAndroid Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġset Theme ( R . style . App Theme ) ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġbinding Ġ= ĠData Binding Util . set ContentView ( this , ĠR . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġbinding . lifecycle Owner Ġ= Ġthis ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsetup Bottom NavigationBar () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġandroid Injector (): ĠAndroid Injector < Any > Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġandroid Injector ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġnav Controller ?. value ?. remove On Destination Changed Listener ( listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġlistener Ġ= ĠNav Controller . On Destination Changed Listener Ġ{ Ġ_, Ġ_, Ġ_ Ġ-> ĊĠĠĠĠĠĠĠ Ġ// Ġlisten Ġto Ġnav Ġgraph Ġchanges ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Bottom NavigationBar () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġbottom Navigation View Ġ= Ġbinding . nav View ĊĠĠĠĠĠĠĠ Ġval Ġnav Graph Ids Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . navigation . nav _ home , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . navigation . nav _ dashboard , ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . navigation . nav _ notifications ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġval Ġfragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠ Ġfragment Manager . fragment Factory Ġ= Ġfragment Factory ĊĊĠĠĠĠĠĠĠ Ġ// ĠSetup Ġthe Ġbottom Ġnavigation Ġview Ġwith Ġa Ġlist Ġof Ġnavigation Ġgraphs ĊĠĠĠĠĠĠĠ Ġval Ġcontroller Ġ= Ġbottom Navigation View . setup With Nav Controller ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Graph Ids Ġ= Ġnav Graph Ids , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Manager Ġ= Ġfragment Manager , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġcontainer Id Ġ= ĠR . id . nav _ host _ fragment , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġintent Ġ= Ġintent ĊĠĠĠĠĠĠĠ Ġ) ĊĊĠĠĠĠĠĠĠ Ġcontroller . observe ( this , ĠObserver Ġ{ Ġnc Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnav Controller ?. value ?. remove On Destination Changed Listener ( listener ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnc . add On Destination Changed Listener ( listener ) ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġnav Controller Ġ= Ġcontroller ĊĠĠĠ Ġ} Ċ } Ċ