/* Ċ Ġ* ĠĠĠ ĠCopyright Ġ 2 0 1 8 ĠN ie k ĠH aar man Ċ Ġ* Ċ Ġ* ĠĠĠ ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* ĠĠĠ Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠĠĠ ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠĠĠ ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* ĠĠĠ Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠĠĠ ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠĠĠ ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* ĠĠĠ Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . n ha ar man . ac orn . android Ċ Ċ import Ġandroid . annotation . Suppress Lint Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroid . widget . Frame Layout Ċ import Ġandroidx . annotation . Call Super Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġcom . n ha ar man . ac orn . android . navigation . Navigator Provider Ċ import Ġcom . n ha ar man . ac orn . android . presentation . Activity Controller Ċ import Ġcom . n ha ar man . ac orn . android . presentation . Activity Controller Factory Ċ import Ġcom . n ha ar man . ac orn . android . presentation . Comp osing ViewController Factory Ċ import Ġcom . n ha ar man . ac orn . android . presentation . No op Activity Controller Factory Ċ import Ġcom . n ha ar man . ac orn . android . presentation . No op ViewController Factory Ċ import Ġcom . n ha ar man . ac orn . android . presentation . Scene ViewController Factory Ċ import Ġcom . n ha ar man . ac orn . android . presentation . ViewController Ċ import Ġcom . n ha ar man . ac orn . android . presentation . ViewController Factory Ċ import Ġcom . n ha ar man . ac orn . android . transition . Comp osing Scene Transition Factory Ċ import Ġcom . n ha ar man . ac orn . android . transition . Default Scene Transition Factory Ċ import Ġcom . n ha ar man . ac orn . android . transition . No op Scene Transition Factory Ċ import Ġcom . n ha ar man . ac orn . android . transition . Scene Transition Ċ import Ġcom . n ha ar man . ac orn . android . transition . Scene Transition Factory Ċ import Ġcom . n ha ar man . ac orn . navigation . Navigator Ċ import Ġcom . n ha ar man . ac orn . presentation . Scene Ċ Ċ /** Ċ Ġ* ĠA Ġbase Ġ[ AppCompatActivity ] Ġimplementation Ġto Ġsimplify ĠA corn Ġusage . Ċ Ġ* Ċ Ġ* ĠIf Ġyou Ġcan 't Ġor Ġdon 't Ġwant Ġto Ġinherit Ġfrom Ġthis Ġclass , Ġyou Ġcan Ġuse Ġthe Ċ Ġ* Ġ[ Ac orn Activity Delegate ] Ġclass Ġand Ġroute Ġthe Ġnecessary ĠActivity Ġfunction Ċ Ġ* Ġcalls Ġto Ġit . Ċ Ġ*/ Ċ abstract Ġclass ĠA corn AppCompatActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġ[ Navigator Provider ] Ġto Ġuse Ġin Ġthis ĠActivity . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ[ Navigator Provider ] Ġinstances Ġshould Ġbe Ġshared Ġacross Ġinstances , Ġso ĊĠĠĠĠ Ġ* Ġmake Ġsure Ġyou Ġcache Ġthis Ġinstance Ġoutside Ġof Ġthis ĠActivity . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġabstract Ġfun Ġprovide Navigator Provider (): ĠNavigator Provider ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġ[ ViewController Factory ] Ġthat Ġcan Ġprovide ĊĠĠĠĠ Ġ* Ġ[ ViewController ] Ġinstances Ġfor Ġthis ĠActivity . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġinstance Ġreturned Ġhere Ġwill Ġbe Ġcombined Ġwith Ġa ĊĠĠĠĠ Ġ* Ġ[ Scene ViewController Factory ] Ġto Ġbe Ġable Ġto Ġuse Ġ[ Scene ] Ġinstances Ġas ĊĠĠĠĠ Ġ* ĠView Controller Ġfactories . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠReturns Ġ[ No op ViewController Factory ] Ġby Ġdefault . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġprovide ViewController Factory (): ĠView Controller Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNo op ViewController Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġ[ Scene Transition Factory ] Ġto Ġcreate Ġ[ Scene Transition ] Ġinstances ĊĠĠĠĠ Ġ* Ġfor Ġthis ĠActivity . ĠThe Ġresulting Ġfactory Ġinstance Ġwill Ġbe Ġcombined Ġwith ĊĠĠĠĠ Ġ* Ġa Ġ[ Default Scene Transition Factory ] Ġas Ġfallback . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠBy Ġdefault , Ġthis Ġreturns Ġa Ġ[ No op Scene Transition Factory ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġview Controller Factory ĠThe Ġ[ ViewController Factory ] Ġas Ġreturned Ġby ĊĠĠĠĠ Ġ* Ġ[ provide ViewController Factory ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġprovide Transition Factory ( view Controller Factory : ĠView Controller Factory ): ĠScene Transition Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNo op Scene Transition Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġ[ Activity Controller Factory ] Ġthat Ġcan Ġprovide ĊĠĠĠĠ Ġ* Ġ[ Activity Controller ] Ġinstances Ġwhen Ġusing Ġexternal ĠActiv ities . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġprovide Activity Controller Factory (): ĠActivity Controller Factory Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠNo op Activity Controller Factory ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġroot Ġ[ ViewGroup ] Ġthat Ġis Ġused Ġto Ġinf late ĠScene Ġviews Ġin . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġwill Ġbe Ġcalled Ġonce Ġby ĠA corn , Ġso Ġit Ġis Ġsafe Ġto Ġcreate Ġnew Ġinstances Ġhere . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠOverride Ġthis Ġmethod Ġif Ġyou Ġwant Ġto Ġprovide Ġyour Ġown ĠViewGroup Ġimplementation . ĊĠĠĠĠ Ġ* ĠIf Ġthe Ġreturned ĠViewGroup Ġhas Ġno Ġparent , Ġit Ġwill Ġbe Ġpassed Ġto Ġa Ġcall Ġto Ġ[ set ContentView ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġmethod Ġreturns Ġ` null ` Ġby Ġdefault , Ġwhich Ġwill Ġresult Ġin Ġan Ġempty Ġ[ Frame Layout ] Ġbeing ĊĠĠĠĠ Ġ* Ġused Ġas Ġthe Ġcontent Ġview . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* Ġ@ return Ġa ĠViewGroup Ġto Ġbe Ġused Ġas Ġthe Ġroot Ġview , Ġor Ġ` null ` Ġto Ġfall Ġback Ġto Ġdefault Ġbehavior . ĊĠĠĠĠ Ġ* Ġ@ see Ġroot View ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġopen Ġfun Ġprovide Root View (): ĠViewGroup ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġnavigator Provider : ĠNavigator Provider Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġprovide Navigator Provider () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġview Controller Factory : ĠView Controller Factory Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠComp osing ViewController Factory . from ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠScene ViewController Factory , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide ViewController Factory () ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġtransition Factory : ĠScene Transition Factory Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠComp osing Scene Transition Factory . from ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprovide Transition Factory ( view Controller Factory ), ĊĠĠĠĠĠĠĠĠĠĠĠ ĠDefault Scene Transition Factory ( view Controller Factory ) ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġactivity Controller Factory : ĠActivity Controller Factory Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġprovide Activity Controller Factory () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠReturns Ġthe Ġnavigator Ġused Ġin Ġthis Ġinstance . ĊĠĠĠĠ Ġ* ĠMust Ġonly Ġbe Ġcalled Ġ_ after _ Ġ[ onCreate ] Ġhas Ġbeen Ġcalled . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġnavigator (): ĠNavigator Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġac orn Delegate . navigator () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġroot View Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġprovide Root View () Ġ?: ĠFrame Layout ( this ) ĊĠĠĠĠĠĠĠ Ġif Ġ( root View . parent Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( root View ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġroot View ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġval Ġac orn Delegate : ĠA corn Activity Delegate Ġby Ġlazy Ġ{ ĊĠĠĠĠĠĠĠ ĠA corn Activity Delegate . from ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Ġ= Ġthis , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot Ġ= Ġroot View , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġnavigator Provider Ġ= Ġnavigator Provider , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġview Controller Factory Ġ= Ġview Controller Factory , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġactivity Controller Factory Ġ= Ġactivity Controller Factory , ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransition Factory Ġ= Ġtransition Factory ĊĠĠĠĠĠĠĠ Ġ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġac orn Delegate . onCreate ( savedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĠĠĠĠĠĠĠ Ġac orn Delegate . onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠĠĠĠĠ Ġac orn Delegate . on Activity Result ( request Code , ĠresultCode , Ġdata ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ(! ac orn Delegate . on Back Pressed ()) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġac orn Delegate . on Stop () ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġac orn Delegate . on Destroy () ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ[ AppCompatActivity . on Save InstanceState ] Ġsaves Ġthe Ġview Ġhierarchy Ġstate , ĊĠĠĠĠ Ġ* Ġwhich Ġis Ġsomething Ġwe Ġdo Ġmanually . ĠTherefore Ġwe Ġdo Ġnot Ġcall Ġthe Ġsuper ĊĠĠĠĠ Ġ* Ġimplementation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Suppress Lint (" Missing Super Call ") ĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġac orn Delegate . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} Ċ } Ċ