package Ġcom . q ase . android . apps keleton . fragment Ċ Ċ import Ġandroid . util . Log Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġcom . q ase . android . apps keleton . Base App Ċ import Ġcom . q ase . android . apps keleton . R Ċ import Ġjava . util . ArrayList Ċ Ċ class ĠBase FragmentManager Ġ{ ĊĠĠĠ Ġvar Ġandroid FragmentManager : ĠFragment Manager ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Main Container Fragment : ĠIF ragment < *> ? Ġ= Ġnull ĊĊĠĠĠ Ġprivate Ġval Ġconstraints Ġ= ĠArrayList < Base Constraint >() ĊĊĠĠĠ Ġval Ġfragment Manager : ĠFragment Manager ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( android FragmentManager Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġandroid FragmentManager Ġ= ĠBase App . instance . base Activity ?. support FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġandroid FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" Could Ġnot Ġget ĠFragment ĠManager ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠAdd Ġrequirement Ġclass Ġto Ġlist Ġ( all Ġrequirements Ġwill Ġbe Ġevaluated Ġat Ġchange Ġfragment Ġtime ) ĊĠĠĠĠ Ġ* Ġ@ param Ġconstraint ĠDesc endant Ġof ĠBase Constraint Ġclass ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġadd Fragment Change Constraint ( constraint : ĠBase Constraint ) Ġ{ ĊĠĠĠĠĠĠĠ Ġconstraints . add ( constraint ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠExecute Ġevaluate Ġmethod Ġin Ġall Ġconstraint Ġobjects ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Class ĠFragment ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġ< Fragment Type Ġ: ĠIF ragment < Bundle Type >, ĠBundle Type Ġ: ĠBase Bundle > Ġevaluate Constraints ( fragment Class : ĠClass < Fragment Type >) Ġ{ ĊĠĠĠĠĠĠĠ Ġfor Ġ( c Ġin Ġconstraints ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġc . evaluate ( fragment Class ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġ< Fragment Type Ġ: ĠIF ragment < Bundle Type >, ĠBundle Type Ġ: ĠBase Bundle > Ġchange Fragment ( fragment Class FullName : ĠString , Ġkey : ĠString , Ġextras : ĠBundle Type ? Ġ= Ġnull , Ġr Frag Container : ĠInt Ġ= ĠMAIN _ CONTAINER _ ID , Ġfr Manager : ĠFragment Manager ? Ġ= Ġnull , Ġclear Back stack : ĠBoolean Ġ= Ġfalse ): ĠFragment Type Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Class Ġ= ĠClass . forName ( fragment Class FullName ) ĊĠĠĠĠĠĠĠ Ġreturn Ġchange Fragment ( fragment Class Ġas ĠClass < Fragment Type >, Ġkey , Ġr Frag Container , Ġtrue , Ġfr Manager , Ġextras , Ġclear Back stack ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġ< Fragment Type Ġ: ĠIF ragment < Bundle Type >, ĠBundle Type Ġ: ĠBase Bundle > Ġchange Fragment ( fragment Class : ĠClass < Fragment Type >, Ġkey : ĠString , Ġextras : ĠBundle Type ? Ġ= Ġnull , Ġr Frag Container : ĠInt Ġ= ĠMAIN _ CONTAINER _ ID , Ġfr Manager : ĠFragment Manager ? Ġ= Ġnull , Ġclear Back stack : ĠBoolean Ġ= Ġfalse ): ĠFragment Type Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn Ġchange Fragment ( fragment Class , Ġkey , Ġr Frag Container , Ġtrue , Ġfr Manager , Ġextras , Ġclear Back stack ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠFragment Ġchange Ġmethod Ġ- Ġused Ġfor Ġfragments Ġon Ġfirst Ġlevel ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Class ĠFragment Ġto Ġchange ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġr Frag Container ĠResource Ġof Ġfragment Ġcontainer ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param ĠaddTo Back Stack ĠAdd Ġto Ġback stack ; Ġusually Ġtrue Ġ( combin ig Ġtrue / false Ġon Ġone Ġlevel Ġbreaks Ġback Ġbutton Ġfunctionality ) ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Manager ĠInternal Ġfragment Ġmanager Ġof Ġen closing Ġobject ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġextras ĠCustom Ġdata Ġto Ġupdate Ġfragment Ġwith ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ< Fragment Type > ĠClass Ġtype Ġof Ġthe Ġfragment ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ< Bundle Type > ĠClass Ġtype Ġof Ġthe Ġbundle ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠFragment Ġinstance ĊĠĠĠ Ġ</ Bundle Type ></ Fragment Type > Ġ*/ ĊĠĠĠ Ġprotected Ġfun Ġ< Fragment Type Ġ: ĠIF ragment < Bundle Type >, ĠBundle Type Ġ: ĠBase Bundle > Ġchange Fragment ( fragment Class : ĠClass < Fragment Type >, Ġkey : ĠString , Ġr Frag Container : ĠInt , ĠaddTo Back Stack : ĠBoolean , Ġfr Manager : ĠFragment Manager ?, Ġextras : ĠBundle Type ?, Ġclear Back stack : ĠBoolean ): ĠFragment Type Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSets Ġspecific Ġfragment Manager Ġ( from Ġparent Ġfragment ) Ġor Ġuse Ġglobally Ġdefined Ġfragment Ġmanager Ġ( top most ) ĊĠĠĠĠĠĠĠ Ġval Ġfm Ġ= Ġfr Manager Ġ?: Ġfragment Manager ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( clear Back stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġclear Back stack ( fm ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġget Fragment < Fragment Type , ĠBundle Type >( fragment Class , Ġkey , Ġfm , Ġextras ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠBegin Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfm . beginTransaction () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReplace Ġwhatever Ġis Ġin Ġthe Ġfragment _ container Ġview Ġwith Ġthis Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . replace ( r Frag Container , Ġfragment Ġas ĠFragment , Ġkey ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠAdd Ġthe Ġtransaction Ġto Ġthe Ġback Ġstack Ġso Ġthe Ġuser Ġcan Ġnavigate Ġback ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( addTo Back Stack ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . addTo Back Stack ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCommit Ġthe Ġtransaction ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( r Frag Container Ġ== ĠMAIN _ CONTAINER _ ID ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Main Container Fragment Ġ= Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfm . execute Pending Transactions () ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġ@ INFO Ġwrong Ġback stack Ġcount Ġhere ; Ġcommit Ġis Ġnot Ġyet Ġfinished Ġso Ġcount Ġshows Ġcount - 1 ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" Fragment : Ġ" Ġ+ Ġkey Ġ+ Ġ" Ġ( back stack Ġcount Ġ" Ġ+ Ġfm . get Back Stack Entry Count () Ġ+ Ġ") ") ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment Class . cast ( fragment ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Change Ġfragment Ġfailed !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġex ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠRemove Ġfragment ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Class ĠFragment Ġto Ġremove ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Manager ĠInternal Ġfragment Ġmanager Ġof Ġen closing Ġobject ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ< Fragment Type > ĠClass Ġtype Ġof Ġthe Ġfragment ĊĠĠĠ Ġ</ Fragment Type > Ġ*/ ĊĠĠĠ Ġfun Ġ< Fragment Type Ġ: ĠIF ragment < Bundle Type >, ĠBundle Type Ġ: ĠBase Bundle > Ġremove Fragment ( fragment Class : ĠClass < Fragment Type >, Ġkey : ĠString , Ġfr Manager : ĠFragment Manager ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfm Ġ= Ġfr Manager Ġ?: Ġfragment Manager ĊĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġfm . beginTransaction () ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġfm . find Fragment By Tag ( key ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . detach ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠCreate Ġnew Ġfragment Ġinstance Ġor Ġget Ġexisting ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Class ĠFragment Ġto Ġget ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġfm ĠInternal Ġfragment Ġmanager Ġof Ġen closing Ġobject ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ param Ġ< Fragment Type > ĠClass Ġtype Ġof Ġthe Ġfragment ĊĠĠĠĠ Ġ* Ġ* ĊĠĠĠĠ Ġ* Ġ@ return ĠFragment Ġinstance ĊĠĠĠ Ġ</ Fragment Type > Ġ*/ ĊĠĠĠ Ġfun Ġ< Fragment Type Ġ: ĠIF ragment < Bundle Type >, ĠBundle Type Ġ: ĠBase Bundle > Ġget Fragment ( fragment Class : ĠClass < Fragment Type >, Ġkey : ĠString , Ġfm : ĠFragment Manager , Ġextras : ĠBundle Type ?): ĠFragment Type Ġ{ ĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCheck Ġif Ġfragment Ġexists ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġexist Fragment Ġ= Ġfm . find Fragment By Tag ( key ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġis Re using : ĠBoolean ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment : ĠFragment Type ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( exist Fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠUse Ġexisting Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= Ġexist Fragment Ġas ĠFragment Type ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Re using Ġ= Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠCreate Ġfragment Ġ- Ġcall Ġstatic Ġmethod Ġnew Instance Ġand Ġreturn Ġits Ġobject Ġreturn Ġvalue ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Ġ= Ġfragment Class . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġis Re using Ġ= Ġfalse ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . data Ġ= Ġextras ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ( if Ġ( is Re using ) Ġ" Re Using " Ġelse Ġ" Creating ") Ġ+ Ġ" ĠFragment : Ġ" Ġ+ Ġkey ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment Class . cast ( fragment ) ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . e ( LOG _ TAG , Ġ" Get Ġfragment Ġfailed !") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthrow Ġ Ġex ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠUpdate Ġcurrent Ġfragment Ġwhen Ġback Ġpressed ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ ĠLog . d ( LOG _ TAG , Ġ" Back Ġpressed Ġto Ġ${ current Fragment ?. tag } Ġ( back stack Ġcount Ġ${ fragment Manager . back Stack Entry Count }) ") ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Fragment At Back Stack Index ( index : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġremove Fragment At Back Stack Index ( null , Ġindex ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfun Ġremove Fragment At Back Stack Index ( fr Manager : ĠFragment Manager ?, Ġindex : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfm Ġ= Ġfr Manager Ġ?: Ġfragment Manager ĊĠĠĠĠĠĠĠ Ġval Ġname Ġ= Ġfm . get Back Stack Entry At ( index ). name ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġfm . find Fragment By Tag ( name ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtrans Ġ= Ġfm . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrans . remove ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrans . commit () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfm . pop Back Stack () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear s Ġtop Ġitem Ġfor Ġgiven Ġfragment Ġmanager Ġ( or Ġuse Ġandroid FragmentManager ) ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Manager ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġpop Back stack Top ( fr Manager : ĠFragment Manager ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSets Ġspecific Ġfragment Manager Ġ( from Ġparent Ġfragment ) Ġor Ġuse Ġglobally Ġdefined Ġfragment Ġmanager Ġ( top most ) ĊĠĠĠĠĠĠĠ Ġval Ġfm Ġ= Ġfr Manager Ġ?: Ġfragment Manager ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( fm . get Back Stack Entry Count () Ġ> Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfm . execute Pending Transactions () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Fragment At Back Stack Index ( fm , Ġfm . get Back Stack Entry Count () Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġremove Fragment At Back Stack Index ( fm , Ġfm . get Back Stack Entry Count () Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfm . execute Pending Transactions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠClear s Ġback Ġst act Ġfor Ġgiven Ġfragment Ġmanager Ġ( or Ġuse Ġandroid FragmentManager ) ĊĠĠĠĠ Ġ* Ġ@ param Ġfragment Manager ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġ@ Jvm Over loads ĊĠĠĠ Ġfun Ġclear Back stack ( fr Manager : ĠFragment Manager ? Ġ= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠSets Ġspecific Ġfragment Manager Ġ( from Ġparent Ġfragment ) Ġor Ġuse Ġglobally Ġdefined Ġfragment Ġmanager Ġ( top most ) ĊĠĠĠĠĠĠĠ Ġval Ġfm Ġ= Ġfr Manager Ġ?: Ġfragment Manager ĊĊĠĠĠĠĠĠĠ Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfm . execute Pending Transactions () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfor Ġ( i Ġin Ġ 0 .. fm . get Back Stack Entry Count () Ġ- Ġ 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfm . pop Back Stack Immediate ( null , ĠFragment Manager . POP _ BACK _ STACK _ INCL USIVE ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( ex : ĠException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġex . printStackTrace () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* Ġ@ return ĠFragment Ġto ĠIF ragment Ġcast ed Ġinstance ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcurrent IF ragment : ĠIF ragment < *> ? ĊĠĠĠĠĠĠĠ Ġget () Ġ= Ġcurrent Fragment Ġas ĠIF ragment < *> ? ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġcurrent Ġfragment ĊĠĠĠĠ Ġ* Ġ@ return ĠFragment Ġor Ġnull Ġif Ġfragment Ġdoesn 't Ġexists ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcurrent Fragment : ĠFragment ? ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Tag Ġ= Ġcurrent Fragment Tag ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment Manager . find Fragment By Tag ( fragment Tag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠGet Ġcurrent Ġfragment Ġtag ĊĠĠĠĠ Ġ* Ġ@ return ĠFragment Ġtag ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġval Ġcurrent Fragment Tag : ĠString ĊĠĠĠĠĠĠĠ Ġget () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġback Stack Count Ġ= Ġfragment Manager . back Stack Entry Count ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġvar Ġfragment Tag Ġ= Ġ"" ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( back Stack Count Ġ> Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment Tag Ġ= Ġfragment Manager . get Back Stack Entry At ( back Stack Count Ġ- Ġ 1 ). name ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ?: Ġthrow ĠRuntimeException (" No Ġname Ġfor Ġfragment ") ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment Tag ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠMAIN _ CONTAINER _ ID Ġ= ĠR . id . fragment _ container ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval ĠLOG _ TAG Ġ= Ġ" FragmentManager " ĊĠĠĠ Ġ} Ċ } Ċ /** Ċ Ġ* Ġ 1 st ĠOverride Ġwithout Ġspecifying Ġfragment Ġmanager Ċ Ġ*/ Ċ