package Ġcom . ek al ips . ca h sc rowd . main . mv vm . view Ċ Ċ import Ġandroid . arch . lifecycle . Observer Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Bottom Navigation View Ċ import Ġcom . ek al ips . ca h sc rowd . BR Ċ import Ġcom . ek al ips . ca h sc rowd . R Ċ import Ġcom . ek al ips . ca h sc rowd . databinding . Activity Main Binding Ċ import Ġcom . ek al ips . ca h sc rowd . main . mv vm . vm . Main Screen ViewModel Ċ import Ġcom . ek al ips . ca h sc rowd . main . navigation . MainActivity Navigator Ċ import Ġcom . ek al ips . ca h sc rowd . main . navigation . MainActivity Place Ċ import Ġcom . ek al ips . ca h sc rowd . stuff . base . CC Activity Ċ import Ġcom . ek al ips . ca h sc rowd . stuff . navigation . Place Ċ import Ġjavax . inject . Inject Ċ Ċ class ĠMainActivity Ġ: ĠCC Activity < Main Screen ViewModel , ĠActivity Main Binding >() Ġ{ ĊĠĠĠ Ġoverride Ġval Ġvm Class : ĠClass < Main Screen ViewModel > Ġ= ĠMain Screen ViewModel :: class . java ĊĠĠĠ Ġoverride Ġval Ġlayout Id : ĠInt Ġ= ĠR . layout . activity _ main ĊĠĠĠ Ġoverride Ġval Ġbr Res : ĠInt Ġ= ĠBR . vm ĊĊĠĠĠ Ġlateinit Ġvar Ġlocal Navigator : ĠMainActivity Navigator ĊĠĠĠĠĠĠĠ Ġ@ Inject Ġset ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠviewModel . state . navigation . observe ( this , ĠObserver Ġ{ Ġit ?. let Ġ{ Ġlocal Navigator . handle Navigation ( it ) Ġ} Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding ?. bottom Navigation ?. setOn Navigation ItemSelected Listener ( bottom Navigation Listener ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠĠĠĠĠ Ġbinding ?. bottom Navigation ?. setOn Navigation Item Re selected Listener ( null ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġbottom Navigation Listener Ġ= ĠBottom Navigation View . On Navigation ItemSelected Listener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠ Ġwhen Ġ( item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ dashboard Ġ-> ĠviewModel . change Screen ( MainActivity Place . EVENTS ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ profile Ġ-> ĠviewModel . change Screen ( MainActivity Place . PROFILE ) ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . menu _ stat Ġ-> ĠviewModel . change Screen ( MainActivity Place . ACCOUNT ING ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġhandle Navigation ( place : ĠPlace , Ġpayload : ĠAny ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( place ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠPlace . EVENT Ġ-> Ġnavigator . navigate To Event Screen ( this , Ġpayload Ġas ĠString ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }