package Ġcom . s ot wt m . support . fragment Ċ Ċ import Ġandroid . content . Context Ċ import Ġandroid . content . Intent Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . annotation . Anim Res Ċ import Ġandroidx . annotation . Layout Res Ċ import Ġandroidx . annotation . String Res Ċ import Ġcom . google . android . material . sn ackbar . Snackbar Ċ import Ġcom . s ot wt m . support . R Ċ import Ġcom . s ot wt m . support . S ot wt m Support Lib Ċ import Ġcom . s ot wt m . support . activity . App Help ful Activity Ċ import Ġcom . s ot wt m . support . activity . I Override Pending Transition Ċ import Ġcom . s ot wt m . support . util . Snackbar Duration Ċ import Ġcom . s ot wt m . support . util . create Snackbar Ċ import Ġcom . s ot wt m . support . util . hide Soft Keyboard Ċ import Ġcom . s ot wt m . util . Log Ċ import Ġdagger . Lazy Ċ import Ġdagger . android . Dispatch ing Android Injector Ċ import Ġdagger . android . support . Android Support Injection Ċ import Ġjavax . inject . Inject Ċ Ċ /** Ċ Ġ* ĠA Ġfragment Ġcontains Ġhelpful ĠAPI . ĊĊ Ġ* Ġ@ author Ġshe ung on Ċ Ġ*/ Ċ abstract Ġclass ĠApp Help ful Fragment Ġ: Ġandroidx . fragment . app . Fragment () Ġ{ ĊĊĠĠĠ Ġ@ Inject ĊĠĠĠ Ġinternal Ġlateinit Ġvar Ġchild Fragment Injector : ĠLazy < Dispatch ing Android Injector < android x . fragment . app . Fragment > ?> ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġlayout ĠID Ġfor Ġthis Ġfragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ get : Layout Res ĊĠĠĠ Ġabstract Ġval Ġlayout Res Id : ĠInt ĊĊĠĠĠ Ġ/** Indic ate Ġif Ġdagger Ġinjection Ġis Ġenabled Ġto Ġthis Ġfragment .*/ ĊĠĠĠ Ġopen Ġval Ġdagger Enabled : ĠBoolean Ġ= Ġtrue ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠEnter Ġscreen Ġanimation Ġto Ġoverride Ġon Ġstart Ġactivity ĊĠĠĠĠ Ġ* Ġ@ return Ġ 0 Ġmeans Ġno Ġanimation Ġthe Ġactivity Ġanimation ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġstart Enter Anim : ĠInt ĊĠĠĠĠĠĠĠ Ġ@ Anim Res ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . anim . fragment _ slide _ in _ from _ right ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠExit Ġscreen Ġanimation Ġto Ġoverride Ġon Ġstart Ġactivity ĊĠĠĠĠ Ġ* Ġ@ return Ġ` null ` Ġmeans Ġnot Ġoverride Ġthe Ġactivity Ġanimation ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġstart Exit Anim : ĠInt ĊĠĠĠĠĠĠĠ Ġ@ Anim Res ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . anim . fragment _ slide _ out _ to _ left ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠEnter Ġscreen Ġanimation Ġto Ġoverride Ġon Ġfinish Ġactivity ĊĠĠĠĠ Ġ* Ġ@ return Ġ` null ` Ġmeans Ġnot Ġoverride Ġthe Ġactivity Ġanimation ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġfinish Enter Anim : ĠInt ĊĠĠĠĠĠĠĠ Ġ@ Anim Res ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . anim . fragment _ slide _ in _ from _ left ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe ĠExit Ġscreen Ġanimation Ġto Ġoverride Ġon Ġfinish Ġactivity ĊĠĠĠĠ Ġ* Ġ@ return Ġ` null ` Ġmeans Ġnot Ġoverride Ġthe Ġactivity Ġanimation ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġfinish Exit Anim : ĠInt ĊĠĠĠĠĠĠĠ Ġ@ Anim Res ĊĠĠĠĠĠĠĠ Ġget () Ġ= ĠR . anim . fragment _ slide _ out _ to _ right ĊĊĠĠĠ Ġabstract Ġval Ġdata Binder : ĠApp Help ful Fragment Data Binder ? ĊĊĠĠĠ Ġoverride Ġfun Ġon Attach ( context : ĠContext ) Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( d agger Enabled ) ĠAndroid Support Injection . inject ( this ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( S ot wt m Support Lib . enable D agger Error Log ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Disable Ġdagger Ġerror Ġlog Ġby ĠS ot wt m Support Lib . enable D agger Error Log ", Ġe ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġsuper . on Attach ( context ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġdata Binder ?. onCreate () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( ĊĠĠĠĠĠĠĠ Ġinflater : ĠLayoutInflater , ĊĠĠĠĠĠĠĠ Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ? ĊĠĠĠ Ġ): ĠView Ġ= ĊĠĠĠĠĠĠĠ Ġinflater . inflate ( layout Res Id , Ġcontainer , Ġfalse ) ĊĊĠĠĠ Ġoverride Ġfun Ġon View Created ( view : ĠView , ĠsavedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on View Created ( view , ĠsavedInstanceState ) ĊĊĠĠĠĠĠĠĠ Ġdata Binder ?. on View Created Internal ( view , ĠsavedInstanceState ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonStart () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onStart () ĊĊĠĠĠĠĠĠĠ Ġdata Binder ?. onStart () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Resume () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Resume () ĊĊĠĠĠĠĠĠĠ Ġdata Binder ?. on Resume Internal () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pause () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Pause () ĊĊĠĠĠĠĠĠĠ Ġdata Binder ?. on Pause Internal () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Stop () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Stop () ĊĊĠĠĠĠĠĠĠ Ġdata Binder ?. on Stop () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy View () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy View () ĊĊĠĠĠĠĠĠĠ Ġdata Binder ?. on Destroy View Internal () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Destroy () Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Destroy () ĊĊĠĠĠĠĠĠĠ Ġdata Binder ?. on Destroy () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠstartActivity ( intent : ĠIntent ) Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠstartActivity ( intent : ĠIntent , Ġoptions : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity ( intent , Ġtrue , Ġoptions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠĠĠ Ġfun ĠstartActivity ( ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent , ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġoptions : ĠBundle ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Cannot Ġstart Ġactivity Ġas Ġthe Ġfragment Ġhas Ġbeen Ġreleased .") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠ Ġ}. invoke () ĊĊĠĠĠĠĠĠĠ Ġsuper . startActivity ( intent , Ġoptions ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( override Pending Transition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠI Override Pending Transition )?. override Pending Transition For Start Activity () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠstartActivity For Result ( intent : ĠIntent , Ġrequest Code : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġrequest Code , Ġnull ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠstartActivity For Result ( intent : ĠIntent , Ġrequest Code : ĠInt , Ġoptions : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ ĠstartActivity For Result ( intent , Ġrequest Code , Ġtrue , Ġoptions ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Suppress (" Member Visibility Can Be Private ") ĊĠĠĠ Ġfun ĠstartActivity For Result ( ĊĠĠĠĠĠĠĠ Ġintent : ĠIntent , ĊĠĠĠĠĠĠĠ Ġrequest Code : ĠInt , ĊĠĠĠĠĠĠĠ Ġoverride Pending Transition : ĠBoolean , ĊĠĠĠĠĠĠĠ Ġoptions : ĠBundle ? Ġ= Ġnull ĊĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġ?: Ġreturn Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Cannot Ġstart Ġactivity Ġas Ġthe Ġfragment Ġhas Ġbeen Ġreleased .") ĊĠĠĠĠĠĠĠĠĠĠĠ ĠUnit ĊĠĠĠĠĠĠĠ Ġ}. invoke () ĊĊĠĠĠĠĠĠĠ Ġsuper . startActivity For Result ( intent , Ġrequest Code , Ġoptions ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( override Pending Transition ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠI Override Pending Transition )?. override Pending Transition For Start Activity () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return Ġ` true ` Ġif Ġview Ġis Ġbound Ġby ĠB utter Kn ife . ĠOtherwise , Ġ` false ` ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġopen Ġval Ġis View Bound : ĠBoolean ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġis Res umed ĊĊĠĠĠ Ġfun Ġshow Loading Dialog () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠApp Help ful Activity )?. show Loading Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠLog . w tf (" This Ġmethod Ġcan Ġonly Ġwork Ġwith Ġparent Ġis ĠApp Help ful Activity ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" Fragment Ġreleased ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Loading Dialog ( msg : ĠString ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠApp Help ful Activity )?. show Loading Dialog ( msg ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠLog . w tf (" This Ġmethod Ġcan Ġonly Ġwork Ġwith Ġparent Ġis ĠApp Help ful Activity ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" Fragment Ġreleased ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġshow Loading Dialog (@ String Res Ġmsg Res : ĠInt ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠApp Help ful Activity )?. show Loading Dialog ( msg Res ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠLog . w tf (" This Ġmethod Ġcan Ġonly Ġwork Ġwith Ġparent Ġis ĠApp Help ful Activity ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" Fragment Ġreleased ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġdismiss Loading Dialog () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠApp Help ful Activity )?. dismiss Loading Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: ĠLog . w tf (" This Ġmethod Ġcan Ġonly Ġwork Ġwith Ġparent Ġis ĠApp Help ful Activity ") ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . v (" Fragment Ġreleased ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShow Ġsn ack Ġbar Ġwith Ġmessage . ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġcalled Ġfrom Ġany Ġthread . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Sn ackBar ( ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġmessage Res : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Snackbar Duration Ġduration : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠApp Help ful Activity )?. show Sn ackBar ( message Res , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġshow Sn ackBar ( activity . getString ( message Res ), Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Fragment Ġis Ġnot Ġattached ! Ġmessage Ġlost Ġ: Ġ$ message Res ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠShow Ġsn ack Ġbar Ġwith Ġmessage . ĊĠĠĠĠ Ġ* ĠThis Ġcan Ġbe Ġcalled Ġfrom Ġany Ġthread . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġshow Sn ackBar ( ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Snackbar Duration Ġduration : ĠInt ĊĠĠĠ Ġ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġif Ġ(! is View Bound ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġ( activity Ġas ? ĠApp Help ful Activity )?. show Sn ackBar ( message , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġif Ġ( activity Ġ!= Ġnull ) Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġview ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( root View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . w (" Cannot Ġget Ġroot Ġview .") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . run On Ui Thread Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdismiss Loading Dialog () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . hide Soft Keyboard () ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . create Snackbar ( message , Ġduration ). show () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Fragment Ġis Ġnot Ġattached ! Ġmessage Ġlost Ġ: Ġ$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Sn ackBar With Root View ( ĊĠĠĠĠĠĠĠ Ġ@ String Res Ġmessage Res : ĠInt , ĊĠĠĠĠĠĠĠ Ġ@ Snackbar Duration Ġduration : ĠInt ĊĠĠĠ Ġ): ĠSn ackbar ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity ĊĠĠĠĠĠĠĠ Ġreturn Ġ( activity Ġas ? ĠApp Help ful Activity )?. create Sn ackBar With Root View ( message Res , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġif Ġ( activity Ġ!= Ġnull ) Ġcreate Sn ackBar With Root View ( ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġactivity . getString ( message Res ), ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġduration ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Fragment Ġis Ġnot Ġattached ! Ġmessage Ġlost Ġ: Ġ$ message Res ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġcreate Sn ackBar With Root View ( ĊĠĠĠĠĠĠĠ Ġmessage : ĠString , ĊĠĠĠĠĠĠĠ Ġ@ Snackbar Duration Ġduration : ĠInt ĊĠĠĠ Ġ): ĠSn ackbar ? Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġ( activity Ġas ? ĠApp Help ful Activity )?. create Sn ackBar With Root View ( message , Ġduration ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e (" Fragment Ġis Ġnot Ġattached ! Ġmessage Ġlost Ġ: Ġ$ message ") ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}. invoke () ĊĠĠĠ Ġ} Ċ } Ċ