package Ġcom . example . android . architecture . utils Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Component Name Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Build . VERSION . SDK _ INT Ċ import Ġandroid . os . Build . VERSION _ CODES . J EL LY _ BE AN Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . os . Looper Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . app . Fragment Transaction Ċ import Ġandroid . widget . Toast Ċ import Ġcom . example . android . architecture . common . Application Ċ import Ġorg . jetbrains . annotations . NotNull Ċ Ċ fun ĠFragment . show Toast With Long Duration ( text : ĠString ) Ġ{ ĊĠ ĠThread ({ ĊĠĠĠ ĠL ooper . prepare () ĊĠĠĠ ĠToast . makeText ( context , Ġtext , ĠToast . LENGTH _ LONG ). show () ĊĠĠĠ ĠL ooper . loop () ĊĠ Ġ}). start () Ċ Ċ } Ċ Ċ object ĠActivity Utils Ġ{ ĊĠ Ġval Ġtop Activity : ĠActivity ? ĊĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠ Ġreturn ĠApplication . activity List . last OrNull () ĊĠĠĠ Ġ} ĊĊĠ Ġfun Ġfinish Activity ( ĊĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠ Ġanimate : ĠBoolean Ġ= Ġtrue ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġactivity . finish () ĊĠĠĠ Ġif Ġ(! animate ) Ġ{ ĊĠĠĠĠĠ Ġactivity . override Pending Transition ( 0 , Ġ 0 ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġadd Fragment ( ĊĠĠĠ Ġ@ NotNull Ġfragment Manager : ĠFragment Manager , ĊĠĠĠ Ġ@ NotNull Ġfragment : ĠFragment , ĊĠĠĠ Ġcontainer Id : ĠInt ĊĠ Ġ) Ġ{ ĊĠĠĠ ĠcheckNotNull ( fragment Manager ) ĊĠĠĠ ĠcheckNotNull ( fragment ) ĊĠĠĠ Ġval Ġfragment Transaction : ĠFragment Transaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠ Ġfragment Transaction . add ( container Id , Ġfragment ) ĊĠĠĠ Ġfragment Transaction . commit () ĊĠ Ġ} ĊĊĠ Ġ@ Suppress Lint (" Obsolete Sdk Int ") ĊĠ Ġfun Ġ< T > ĠstartActivity ( ĊĠĠĠ Ġcontext : ĠContext Ġ= ĠgetActivity Or App (), ĊĠĠĠ Ġpkg : ĠString Ġ= Ġcontext . packageName , ĊĠĠĠ Ġcls : ĠClass < T >, ĊĠĠĠ Ġextras : ĠBundle ? Ġ= Ġnull , ĊĠĠĠ Ġoptions : ĠBundle ? Ġ= Ġnull ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġintent Ġ= ĠIntent ( Intent . ACTION _ VIEW ) ĊĊĠĠĠ Ġcontext . let Ġ{ ĊĠĠĠĠĠ Ġif Ġ( it Ġ! is ĠActivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġintent . add Flags ( Intent . FLAG _ ACTIVITY _ NEW _ TASK ) ĊĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġextras ?. let Ġ{ ĊĠĠĠĠĠ Ġintent . put Extras ( it ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġintent . component Ġ= ĠComponent Name ( pkg , Ġcls . name ) ĊĊĠĠĠ Ġif Ġ( options Ġ!= Ġnull Ġ&& ĠSDK _ INT Ġ>= ĠJ EL LY _ BE AN ) Ġ{ ĊĠĠĠĠĠ Ġcontext . startActivity ( intent , Ġoptions ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠ Ġcontext . startActivity ( intent ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġfun Ġfinish To Activity ( ĊĠĠĠ Ġactivity : ĠActivity , ĊĠĠĠ Ġinclude Self : ĠBoolean Ġ= Ġfalse , ĊĠĠĠ Ġanimate : ĠBoolean Ġ= Ġtrue ĊĠ Ġ) Ġ{ ĊĠĠĠ Ġval Ġactivity List Ġ= ĠApplication . activity List . toList () ĊĠĠĠ Ġfor Ġ( existing Activity Ġin Ġactivity List . reversed ()) Ġ{ ĊĠĠĠĠĠ Ġif Ġ( existing Activity Ġ== Ġactivity ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( include Self ) Ġ{ ĊĠĠĠĠĠĠĠĠĠ Ġfinish Activity ( activity , Ġanimate ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠ Ġ} ĊĠĠĠĠĠ Ġfinish Activity ( existing Activity , Ġanimate ) ĊĠĠĠ Ġ} ĊĠ Ġ} ĊĊĠ Ġprivate Ġfun ĠgetActivity Or App (): ĠContext Ġ{ ĊĠĠĠ Ġreturn Ġtop Activity Ġ?: Ġreturn ĠApplication . application ĊĠ Ġ} Ċ } Ċ