package Ġpl . j its olution s . agile . presentation . common Ċ Ċ import Ġandroid . app . Notification Channel Ċ import Ġandroid . app . Notification Manager Ċ import Ġandroid . content . Context Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . navigation . Navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġorg . kode in . di . K ode in Ċ import Ġorg . kode in . di . K ode in Aware Ċ import Ġorg . kode in . di . K ode in Trigger Ċ import Ġorg . kode in . di . android . kode in Ċ import Ġorg . kode in . di . generic . bind Ċ import Ġorg . kode in . di . generic . instance Ċ import Ġorg . kode in . di . generic . singleton Ċ import Ġpl . j its olution s . agile . R Ċ import Ġpl . j its olution s . agile . presentation . navigation . Android Navigator Ċ import Ġpl . j its olution s . agile . presentation . navigation . Navigator Ċ Ċ abstract Ġclass ĠBase Activity Ġ: ĠAppCompatActivity (), ĠK ode in Aware Ġ{ ĊĠĠĠ Ġabstract Ġval Ġnavigation Graph Res Id : ĠInt ĊĠĠĠ Ġprivate Ġval Ġapp K ode in : ĠK ode in Ġby Ġk ode in () ĊĠĠĠ Ġoverride Ġval Ġk ode in Ġ= ĠK ode in . lazy Ġ{ ĊĠĠĠĠĠĠĠ Ġextend ( app K ode in ) ĊĠĠĠĠĠĠĠ Ġbind < Context >(" activity Context ") Ġwith Ġsingleton Ġ{ Ġthis @ Base Activity Ġ} ĊĠĠĠĠĠĠĠ Ġbind < Navigator >() Ġwith Ġsingleton Ġ{ ĠAndroid Navigator ( instance (" activity Context ")) Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġoverride Ġval Ġk ode in Trigger Ġ= ĠK ode in Trigger () ĊĊĠĠĠ Ġprivate Ġval Ġnavigator : ĠNavigator Ġby Ġinstance () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġk ode in Trigger . trigger () ĊĊĠĠĠĠĠĠĠ Ġregister Notification Channel ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġnav Host Ġ= ĠNav Host Fragment . create ( navigation Graph Res Id ) ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( android . R . id . content , Ġnav Host , Ġ" Nav Host Fragment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. set Primary Navigation Fragment ( nav Host ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( get Top Fragment (). on Back Pressed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfalse ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġfind Nav Controller ( this , Ġandroid . R . id . content ). navigate Up () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġtop Fragment Ġ= Ġget Top Fragment () ĊĠĠĠĠĠĠĠ Ġif Ġ( top Fragment . on Back Pressed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! navigator . navigate Back ( top Fragment . destination )) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġget Top Fragment () Ġ= ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment By Tag (" Nav Host Fragment ") !!. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . child FragmentManager . fragments . last () Ġas ĠFragment Navigation ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġregister Notification Channel ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . O ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Id Ġ= Ġcontext . getString ( R . string . notification _ channel _ id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġchannel Name Ġ= Ġcontext . getString ( R . string . notification _ channel _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġnotification Manager Ġ= Ġcontext . getSystem Service ( Notification Manager :: class . java ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnotification Manager ?. create Notification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Channel ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Id , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġchannel Name , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠNotification Manager . IMPORT ANCE _ HIGH ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ }