/* Ċ Ġ* ĠĠĠ Ġ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 . presentation Ċ Ċ import Ġandroidx . annotation . Call Super Ċ import Ġcom . n ha ar man . ac orn . state . Container State Ċ import Ġcom . n ha ar man . ac orn . state . Scene State Ċ import Ġcom . n ha ar man . ac orn . state . get Ċ import Ġcom . n ha ar man . ac orn . state . scene State Ċ Ċ /** Ċ Ġ* ĠAn Ġabstract Ġbasic Ġ[ Scene ] Ġimplementation Ġthat Ġprovides Ġcommonly Ġused Ċ Ġ* Ġfunctionality . Ċ Ġ* Ċ Ġ* ĠThis Ġclass Ġprovides Ġan Ġ[ attached View ] Ġproperty Ġwhich Ġprovides Ġthe Ġcurrently Ċ Ġ* Ġattached Ġ[ V ] Ġinstance , Ġif Ġavailable . Ċ Ġ* Ċ Ġ* ĠIf Ġthe Ġ[ Container ] Ġtype Ġ[ V ] Ġimplements Ġ[ Rest orable Container ], Ġthis Ġclass Ċ Ġ* Ġwill Ġsave Ġand Ġrestore Ġthe Ġview Ġstate Ġbetween Ġsubsequent Ġcalls Ġto Ġ[ attach ] Ġand Ċ Ġ* Ġ[ detach ]. Ċ Ġ* Ċ Ġ* ĠThis Ġclass Ġis Ġable Ġto Ġsave Ġand Ġrestore Ġits Ġinstance Ġstate Ġin Ċ Ġ* Ġ[ save InstanceState ], Ġbut Ġdoes Ġnot Ġimplement Ġ[ S av able Scene ] Ġitself . Ċ Ġ* ĠYou Ġcan Ġopt Ġin Ġto Ġthis Ġstate Ġsaving Ġby Ġexplicitly Ġimplementing Ġthe Ċ Ġ* Ġ[ S av able Scene ] Ġinterface . Ċ Ġ* Ċ Ġ* Ġ@ param ĠV ĠThe Ġview Ġtype Ġfor Ġthis Ġ[ Scene ]. ĠCan Ġimplement Ġ[ Rest orable Container ] Ċ Ġ* Ġto Ġsave Ġand Ġrestore Ġview Ġstate Ġbetween Ġdifferent Ġviews Ġattached Ġto Ġthe ĠScene . Ċ Ġ* Ġ@ param Ġsaved State ĠA Ġprevious Ġsaved Ġstate Ġinstance Ġfor Ġthis Ġ[ Scene ] Ġas Ċ Ġ* Ġreturned Ġby Ġ[ save InstanceState ]. ĠMay Ġbe Ġ` null `. Ċ Ġ* Ġ@ constructor ĠCreates Ġa Ġnew Ġ[ Basic Scene ], Ġrest oring Ġview Ġstate Ġwhen Ċ Ġ* Ġavailable . Ċ Ġ*/ Ċ abstract Ġclass ĠBasic Scene < V Ġ: ĠContainer >( ĊĠĠĠ Ġsaved State : ĠScene State ? Ċ ) Ġ: ĠScene < V > Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġcurrently Ġattached Ġ[ V ] Ġinstance , Ġif Ġavailable . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThis Ġproperty Ġwill Ġbe Ġupdated Ġwhen Ġ[ attach ] Ġor Ġ[ detach ] Ġis Ġcalled . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠReturns Ġ` null ` Ġif Ġno Ġinstance Ġis Ġattached . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprotected Ġvar Ġattached View : ĠV ? Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġprivate Ġvar Ġcontainer State : ĠContainer State ? Ġ= Ġsaved State ?. container State ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġattach ( v : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer State ?. let Ġ{ Ġ( v Ġas ? ĠRest orable Container )?. restore InstanceState ( it ) Ġ} ĊĠĠĠĠĠĠĠ Ġcontainer State Ġ= Ġnull ĊĠĠĠĠĠĠĠ Ġattached View Ġ= Ġv ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġoverride Ġfun Ġdetach ( v : ĠV ) Ġ{ ĊĠĠĠĠĠĠĠ Ġcontainer State Ġ= Ġ( v Ġas ? ĠRest orable Container )?. save InstanceState () ĊĠĠĠĠĠĠĠ Ġattached View Ġ= Ġnull ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠS aves Ġthe Ġinstance Ġstate Ġfor Ġthis ĠScene . ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠThe Ġdefault Ġimplementation Ġof Ġthis Ġmethod Ġwill Ġsave Ġthe Ġview Ġstate Ġif Ġ[ V ] ĊĠĠĠĠ Ġ* Ġimplements Ġ[ Rest orable Container ]. ĊĠĠĠĠ Ġ* ĊĠĠĠĠ Ġ* ĠImplement ers Ġof Ġthis Ġclass Ġmay Ġoverride Ġthis Ġmethod Ġto Ġsave Ġadditional ĊĠĠĠĠ Ġ* Ġinformation . ĊĠĠĠĠ Ġ* ĠHowever , Ġit Ġis Ġrecommended Ġto Ġcall Ġthe Ġdefault Ġimplementation . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Call Super ĊĠĠĠ Ġopen Ġfun Ġsave InstanceState (): ĠScene State Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġscene State Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . container State Ġ= Ġcontainer State ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ( attached View Ġas ? ĠRest orable Container )?. save InstanceState () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġvar ĠScene State . container State : ĠContainer State ? ĊĠĠĠĠĠĠĠĠĠĠĠ Ġset ( value ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġthis [" view _ state "] Ġ= Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= Ġget (" view _ state ") ĊĠĠĠ Ġ} Ċ } Ċ