package Ġcom . push pal . covid tracker . utils Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . fragment . app . Fragment Ċ Ċ object ĠApp Navigator Ġ{ ĊĊĠ Ġfun ĠstartActivity ( ĊĠĠĠ Ġactivity Class : ĠClass < out ĠActivity >, ĊĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠ Ġfinish After : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġwithout Animation : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġclear Back Stack : ĠBoolean Ġ= Ġfalse ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , Ġactivity Class ) ĊĠĠĠ Ġif Ġ( clear Back Stack ) Ġ{ ĊĠĠĠĠĠ Ġintent . add Flags ( ĊĠĠĠĠĠĠĠĠĠ ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TOP Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . FLAG _ ACTIVITY _ CLEAR _ TASK Ġor ĊĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠIntent . FLAG _ ACTIVITY _ NEW _ TASK ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġactivity . startActivity ( intent ) ĊĠĠĠ Ġif Ġ( finish After ) Ġ{ ĊĠĠĠĠĠ Ġfinish Activity With Animation ( ĊĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġif Ġ(! without Animation ) Ġ{ ĊĠĠĠĠĠ Ġactivity . override Pending Transition ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun ĠstartActivity WithData ( ĊĠĠĠ Ġactivity Class : ĠClass < out ĠAppCompatActivity >, ĊĠĠĠ Ġbundle : ĠBundle , ĊĠĠĠ Ġactivity : ĠAppCompatActivity ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , Ġactivity Class ) ĊĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠ Ġactivity . startActivity ( intent ) ĊĠ Ġ} ĊĊĠ Ġfun ĠstartActivity With Animation ( ĊĠĠĠ Ġactivity Class : ĠClass < out ĠAppCompatActivity >, ĊĠĠĠ Ġin Animation : ĠInt , ĊĠĠĠ Ġout Animation : ĠInt , ĊĠĠĠ Ġactivity : ĠAppCompatActivity ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , Ġactivity Class ) ĊĠĠĠ Ġactivity . startActivity ( intent ) ĊĠĠĠ Ġactivity . override Pending Transition ( in Animation , Ġout Animation ) ĊĠ Ġ} ĊĊĠ Ġfun ĠstartActivity WithData And Animation ( ĊĠĠĠ Ġactivity Class : ĠClass < out ĠAppCompatActivity >, ĊĠĠĠ Ġbundle : ĠBundle , ĊĠĠĠ Ġin Animation : ĠInt , ĊĠĠĠ Ġout Animation : ĠInt , ĊĠĠĠ Ġactivity : ĠAppCompatActivity ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , Ġactivity Class ) ĊĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠ Ġactivity . startActivity ( intent ) ĊĠĠĠ Ġactivity . override Pending Transition ( in Animation , Ġout Animation ) ĊĠ Ġ} ĊĊĠ Ġfun Ġadd Fragment ( ĊĠĠĠ Ġcontainer Id : ĠInt , ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġactivity : ĠAppCompatActivity , ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean Ġ= Ġfalse ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġvar Ġtransaction Ġ= Ġactivity . support FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġ. add ( container Id , Ġfragment , Ġfragment . java Class . name ) ĊĠĠĠ Ġif Ġ( addTo Back Stack ) Ġ{ ĊĠĠĠĠĠ Ġtransaction Ġ= Ġtransaction . addTo Back Stack ( fragment . java Class . name ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġtransaction . commit () ĊĠ Ġ} ĊĊĠ Ġfun Ġreplace Fragment ( ĊĠĠĠ Ġcontainer Id : ĠInt , ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġactivity : ĠAppCompatActivity , ĊĠĠĠ ĠaddTo Back Stack : ĠBoolean ? Ġ= Ġfalse ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġvar Ġtransaction Ġ= Ġactivity . support FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠ Ġ. replace ( container Id , Ġfragment , Ġfragment . java Class . name ) ĊĠĠĠ ĠaddTo Back Stack ?. let Ġ{ ĊĠĠĠĠĠ Ġif Ġ( addTo Back Stack ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtransaction Ġ= Ġtransaction . addTo Back Stack ( fragment . java Class . name ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġtransaction . commit () ĊĠ Ġ} ĊĊĠ Ġfun Ġfinish Activity With Animation ( ĊĠĠĠ Ġin Animation : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġout Animation : ĠInt ? Ġ= Ġnull , ĊĠĠĠ Ġactivity : ĠActivity ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġactivity . finish () ĊĠĠĠ Ġin Animation ?. let Ġ{ ĊĠĠĠĠĠ Ġout Animation ?. let Ġ{ Ġit 1 Ġ-> ĊĠĠĠĠĠĠĠ Ġactivity . override Pending Transition ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit 1 ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun ĠstartActivity WithData For Result ( ĊĠĠĠ Ġactivity Class : ĠClass < out ĠAppCompatActivity >, ĊĠĠĠ Ġbundle : ĠBundle , ĊĠĠĠ Ġactivity : ĠAppCompatActivity , ĊĠĠĠ Ġrequest Code : ĠInt ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( activity , Ġactivity Class ) ĊĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠ Ġactivity . startActivity For Result ( intent , Ġrequest Code ) ĊĠ Ġ} ĊĊĠ Ġfun ĠstartActivity WithData For Result ( ĊĠĠĠ Ġactivity Class : ĠClass < out ĠAppCompatActivity >, ĊĠĠĠ Ġbundle : ĠBundle , ĊĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠ Ġrequest Code : ĠInt ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( fragment . context , Ġactivity Class ) ĊĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠ Ġfragment . startActivity For Result ( intent , Ġrequest Code ) ĊĠ Ġ} ĊĊĠ Ġfun ĠstartActivity WithData ( ĊĠĠĠ Ġactivity Class : ĠClass < out ĠAppCompatActivity >, ĊĠĠĠ Ġbundle : ĠBundle , ĊĠĠĠ Ġfragment : ĠFragment ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( fragment . context , Ġactivity Class ) ĊĠĠĠ Ġintent . put Extras ( bundle ) ĊĠĠĠ Ġfragment . startActivity ( intent ) ĊĠ Ġ} Ċ }