package Ġorg . tok end . template . util . navigation Ċ Ċ import Ġandroid . app . Activity Ċ import Ġandroid . content . Intent Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġorg . tok end . template . util . navigation . Activity Request . Companion Ċ import Ġjava . util .* Ċ Ċ /** Ċ Ġ* ĠRepresents Ġrequest Ġfor Ġan Ġactivity Ġresult Ġstarted Ċ Ġ* Ġby Ġ[ Activity . startActivity For Result ]. ĠIt Ġallows Ġyou Ġdeclare Ġall Ġthe Ġresult Ċ Ġ* Ġprocessing Ġas Ġa Ġcallback Ġwithout Ġneed Ġto Ġmove Ġit Ġto Ġon Activity Result Ċ Ġ* Ċ Ġ* Ġ@ param Ġcode Ġrequest Ġcode Ġpassed Ġto ĠstartActivity For Result Ċ Ġ* Ġ@ param Ġresult Provider Ġprovides Ġresult Ġof Ġtype Ġ[ R ] Ġfrom Ġactivity Ġresult Ġintent Ċ Ġ* Ċ Ġ* Ġ@ see Ġdo On Success Ċ Ġ* Ġ@ see Ġhandle Activity Result Ċ Ġ* Ġ@ see ĠaddTo Ċ Ġ* Ċ Ġ* Ġ@ see ĠComp anion . without Result Data Ċ Ġ**/ Ċ class ĠActivity Request < R Ġ: ĠAny >( ĊĠĠĠĠĠĠĠ Ġval Ġcode : ĠInt Ġ= ĠRandom (). nextInt () Ġand Ġ 0 xffff , ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġresult Provider : Ġ( Intent ?) Ġ-> ĠR ? Ċ ) Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġresult Callback : Ġ(( R ) Ġ-> ĠUnit )? Ġ= Ġnull ĊĊĠĠĠ Ġvar Ġis Completed : ĠBoolean Ġ= Ġfalse ĊĠĠĠĠĠĠĠ Ġprivate Ġset ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠSpecifies Ġcallback Ġfor Ġ[ Activity . RESULT _ OK ] ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġdo On Success ( result WithData Callback : Ġ( R ) Ġ-> ĠUnit ) Ġ= Ġalso Ġ{ ĊĠĠĠĠĠĠĠ Ġit . result Callback Ġ= Ġresult WithData Callback ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdds Ġthis Ġrequest Ġto Ġthe Ġbag Ġof Ġpending Ġrequests Ġof Ġcalling ĠActivity Ġor ĠFragment . ĊĠĠĠĠ Ġ* ĠThe ĠActivity Ġor ĠFragment Ġthen Ġmust Ġcall Ġ[ handle Activity Result ] Ġfor Ġeach Ġitem Ġof Ġthe Ġbag ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun ĠaddTo ( requests Bag : ĠMutable Collection < Activity Request <* >>) Ġ= Ġalso Ġ{ ĊĠĠĠĠĠĠĠ Ġrequests Bag . add ( this ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠMust Ġbe Ġcalled Ġinside Ġ[ Activity . on Activity Result ] Ġor Ġ[ Fragment . on Activity Result ] ĊĠĠĠĠ Ġ* Ġin Ġorder Ġfor Ġresult Ġcallback Ġto Ġbe Ġcalled Ġif Ġthe Ġresult Ġis Ġrelated Ġto Ġthis Ġrequest ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġhandle Activity Result ( request Code : ĠInt , ĠresultCode : ĠInt , Ġdata : ĠIntent ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( request Code Ġ== Ġthis . code Ġ&& ĠresultCode Ġ== ĠActivity . RESULT _ OK ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Ġ= Ġresult Provider ( data ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġresult Callback Ġ= Ġresult Callback ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( result Ġ!= Ġnull Ġ&& Ġresult Callback Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresult Callback ( result ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġis Completed Ġ= Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġequals ( other : ĠAny ?): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġother Ġis ĠActivity Request < *> Ġ&& Ġother . code Ġ== Ġthis . code ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠhashCode (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġcode ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return Ġrequest Ġthat Ġdoes Ġnot Ġtake Ġany Ġdata Ġfrom Ġactivity Ġresult Ġintent ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ param Ġcode Ġrequest Ġcode Ġpassed Ġto ĠstartActivity For Result ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġfun Ġwithout Result Data ( code : ĠInt Ġ= ĠRandom (). nextInt () Ġand Ġ 0 xffff ) Ġ= ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠActivity Request ( code ) Ġ{} ĊĠĠĠ Ġ} Ċ }