package Ġcom . example . cs 4 5 1 8 _ project Ċ Ċ import Ġandroid . Manifest Ċ import Ġandroid . content . pm . PackageManager Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Requires Api Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . Context Compat Ċ import Ġcom . google . android . gms . location . F used Location Provider Client Ċ import Ġcom . google . android . gms . location . Location Services Ċ import Ġjava . util .* ĊĊ Ċ const Ġval ĠREQUEST Ġ= Ġ 1 Ġ// ĠThe Ġrequest Ġcode ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity (), ĠHistory List Fragment . Callbacks , ĠDetail Fragment . Callbacks , ĊĠĠĠ ĠScore Fragment . Callbacks Ġ{ ĊĠĠĠ Ġprivate Ġval Ġfragment Manager Ġ= Ġsupport FragmentManager ĊĠĠĠ Ġlateinit Ġvar Ġf used Location Client : ĠF used Location Provider Client ĊĊĊĠĠĠ Ġoverride Ġfun ĠonSelect History From History ( history Id : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" History ĠSelected Ġ$ history Id ") ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠDetail Fragment . newInstance ( history Id ) ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick New Game From History () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" New ĠGame Ġfrom ĠHistory ") ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠScore Fragment . newInstance () ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick New Game From Detail () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" New ĠGame Ġfrom ĠDetail ") ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠScore Fragment . newInstance () ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick History From Detail () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" History Ġfrom ĠDetail ") ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠHistory List Fragment . newInstance ("") ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick History From Score ( team AS core : ĠInt , Ġteam B Score : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" History Ġfrom ĠScore ") ĊĠĠĠĠĠĠĠ Ġvar Ġwinner : ĠString ĊĠĠĠĠĠĠĠ Ġif Ġ( team AS core Ġ> Ġteam B Score ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwinner Ġ= Ġ" TEAM _ A " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( team AS core Ġ< Ġteam B Score ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwinner Ġ= Ġ" TEAM _ B " ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwinner Ġ= Ġ" DRAW " ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠHistory List Fragment . newInstance ( winner ) ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonClick Save From Score ( history Id : ĠUUID ) Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" Save Ġfrom ĠScore ") ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠDetail Fragment . newInstance ( history Id ) ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . fragment _ container , Ġfragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Requires Api ( Build . VERSION _ CODES . M ) ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġorientation Ġ= Ġresources . configuration . orientation ĊĠĠĠĠĠĠĠ Ġif Ġ( orientation Ġ== Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main _ land ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġif Ġ( Context Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . CAMERA ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED Ġ|| ĊĠĠĠĠĠĠĠĠĠĠĠ ĠContext Compat . check Self Permission ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) Ġ!= ĠPackage Manager . PERMISSION _ GRAN TED ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠYou Ġcan Ġdirectly Ġask Ġfor Ġthe Ġpermission . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠThe Ġregistered ĠActivity Result Callback Ġgets Ġthe Ġresult Ġof Ġthis Ġrequest . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Permissions ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠarrayOf ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . CAMERA , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ F INE _ LOCATION , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠManifest . permission . ACCESS _ CO AR SE _ LOCATION ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ 2 ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġf used Location Client Ġ= ĠLocation Services . getF used Location Provider Client ( this ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtarget Ġ= Ġintent . getString Extra (" TARGET _ FRAGMENT ") ĊĠĠĠĠĠĠĠ Ġif Ġ( findViewById < Frame Layout >( R . id . fragment _ container ) Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Transaction Ġ= Ġfragment Manager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( target ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" SCORE " Ġ-> Ġfragment Transaction . replace ( R . id . fragment _ container , ĠScore Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" HISTORY " Ġ-> Ġfragment Transaction . replace ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . fragment _ container , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠHistory List Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ" DETAIL " Ġ-> Ġfragment Transaction . replace ( R . id . fragment _ container , ĠDetail Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġfragment Transaction . replace ( R . id . fragment _ container , ĠScore Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( this :: class . java . toString (), Ġ" Intent : Ġ$ target ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Transaction . commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ