package Ġcom . cr az yle g end . kotlin extensions . fragments Ċ Ċ import Ġandroidx . annotation . Id Res Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . Fragment Transaction Ċ import Ġcom . cr az yle g end . kotlin extensions . context . dp 2 px Ċ import Ġcom . cr az yle g end . kotlin extensions . context . px 2 dp Ċ Ċ /** Ċ Ġ* ĠCreated Ġby Ġcr azy Ġon Ġ 9 / 7 / 2 0 Ġto Ġlong Ġlive Ġand Ġpro sper Ġ! Ċ Ġ*/ ĊĊ Ċ fun ĠFragment . hide () Ġ{ ĊĠĠĠ Ġthis . parent FragmentManager . hide ( this ) Ċ } Ċ Ċ fun ĠFragment . show () Ġ{ ĊĠĠĠ Ġthis . parent FragmentManager . show ( this ) Ċ } Ċ Ċ fun ĠFragment . remove () Ġ{ ĊĠĠĠ Ġthis . parent FragmentManager . remove ( this ) Ċ } Ċ Ċ fun ĠFragment . show Hide ( ĊĠĠĠĠĠĠĠ Ġvar arg Ġhide Fragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġtransaction : ĠInt Ġ= ĠFragment Transaction . TRANS IT _ NONE Ċ ) Ġ{ ĊĠĠĠ Ġthis . parent FragmentManager . show Hide ( this , Ġ* hide Fragment , Ġtransaction Ġ= Ġtransaction ) Ċ } Ċ Ċ fun ĠFragment Manager . add ( ĊĠĠĠĠĠĠĠ Ġadd Fragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġ@ Id Res Ġcontainer Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Hide : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġis Add Stack : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġtag : ĠString Ġ= Ġadd Fragment :: class . java . name Ċ ) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction () ĊĠĠĠ Ġval Ġfragment By Tag Ġ= Ġthis . find Fragment By Tag ( tag ) ĊĠĠĠ Ġif Ġ( fragment By Tag Ġ!= Ġnull Ġ&& Ġfragment By Tag . is Added ) Ġ{ ĊĠĠĠĠĠĠĠ Ġft . remove ( fragment By Tag ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġft . add ( container Id , Ġadd Fragment , Ġtag ) ĊĠĠĠ Ġif Ġ( is Hide ) Ġft . hide ( add Fragment ) ĊĠĠĠ Ġif Ġ( is Add Stack ) Ġft . addTo Back Stack ( tag ) ĊĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . add ( ĊĠĠĠĠĠĠĠ Ġadd List : ĠList < Fragment >, ĊĠĠĠĠĠĠĠ Ġ@ Id Res Ġcontainer Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġshow Index : ĠInt Ġ= Ġ 0 Ċ ) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction () ĊĠĠĠ Ġfor Ġ( i Ġin Ġadd List . indices ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġadd Fragment Ġ= Ġadd List [ i ] ĊĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġadd Fragment :: class . java . name ĊĠĠĠĠĠĠĠ Ġval Ġfragment By Tag Ġ= Ġthis . find Fragment By Tag ( tag ) ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment By Tag Ġ!= Ġnull Ġ&& Ġfragment By Tag . is Added ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġft . remove ( fragment By Tag ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġft . add ( container Id , Ġadd Fragment , Ġtag ) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( show Index Ġ!= Ġi ) Ġft . hide ( add Fragment ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . hide ( var arg Ġhide Fragment : ĠFragment ) Ġ{ ĊĠĠĠ Ġhide ( hide Fragment . toList ()) Ċ } ĊĊ Ċ fun ĠFragment Manager . hide ( hide Fragment : ĠList < Fragment >) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction () ĊĠĠĠ Ġfor Ġ( fragment Ġin Ġhide Fragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġft . hide ( fragment ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . show ( show Fragment : ĠFragment ) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction () ĊĠĠĠ Ġft . show ( show Fragment ) ĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . remove ( var arg Ġremove Fragment : ĠFragment ) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction () ĊĠĠĠ Ġfor Ġ( fragment Ġin Ġremove Fragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġft . remove ( fragment ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . remove To ( remove To : ĠFragment , Ġis Include Self : ĠBoolean Ġ= Ġfalse ) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction () ĊĠĠĠ Ġval Ġfragments Ġ= Ġthis . get FragmentManager Fragments () ĊĠĠĠ Ġfor Ġ( i Ġin Ġ( fragments . size Ġ- Ġ 1 ) .. 0 ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= Ġfragments [ i ] ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ== Ġremove To Ġ&& Ġis Include Self ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġft . remove ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġbreak ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġft . remove ( fragment ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . removeAll () Ġ{ ĊĠĠĠ Ġval Ġf rg Ġ= Ġget FragmentManager Fragments () ĊĠĠĠ Ġif Ġ( f rg . isEmpty ()) Ġreturn ĊĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction () ĊĠĠĠ Ġfor Ġ( fragment Ġin Ġf rg ) Ġ{ ĊĠĠĠĠĠĠĠ Ġft . remove ( fragment ) ĊĠĠĠ Ġ} ĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . show Hide ( ĊĠĠĠĠĠĠĠ Ġshow Fragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġvar arg Ġhide Fragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġtransaction : ĠInt Ġ= ĠFragment Transaction . TRANS IT _ NONE Ċ ) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction (). set Transition ( transaction ) ĊĊĠĠĠ Ġft . show ( show Fragment ) ĊĠĠĠ Ġfor Ġ( fragment Ġin Ġhide Fragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( fragment Ġ!= Ġshow Fragment ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġft . hide ( fragment ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . replace ( ĊĠĠĠĠĠĠĠ Ġfragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġ@ Id Res Ġcontainer Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġis Add Stack : ĠBoolean Ġ= Ġfalse , ĊĠĠĠĠĠĠĠ Ġtag : ĠString Ġ= Ġfragment :: class . java . name Ċ ) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction () ĊĊĠĠĠ Ġft . replace ( container Id , Ġfragment , Ġtag ) ĊĠĠĠ Ġif Ġ( is Add Stack ) Ġft . addTo Back Stack ( tag ) ĊĊĠĠĠ Ġft . commit () Ċ } ĊĊ Ċ fun ĠFragment Manager . switch ( ĊĠĠĠĠĠĠĠ Ġshow Fragment : ĠFragment , ĊĠĠĠĠĠĠĠ Ġ@ Id Res Ġcontainer Id : ĠInt , ĊĠĠĠĠĠĠĠ Ġtransaction : ĠInt Ġ= ĠFragment Transaction . TRANS IT _ NONE Ċ ) Ġ{ ĊĠĠĠ Ġval Ġft Ġ= Ġthis . beginTransaction (). set Transition ( transaction ) ĊĊĠĠĠ Ġval Ġtag Ġ= Ġshow Fragment :: class . java . name ĊĠĠĠ Ġval Ġfragment By Tag Ġ= Ġthis . find Fragment By Tag ( tag ) ĊĠĠĠ Ġif Ġ( fragment By Tag Ġ!= Ġnull Ġ&& Ġfragment By Tag . is Added ) Ġ{ ĊĠĠĠĠĠĠĠ Ġft . show ( fragment By Tag ) ĊĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠ Ġft . add ( container Id , Ġshow Fragment , Ġtag ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġfor Ġ( temp F Ġin Ġthis . get FragmentManager Fragments ()) Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( temp F Ġ!= Ġfragment By Tag ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġft . hide ( temp F ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĠĠĠ Ġft . commit () Ċ } Ċ Ċ fun ĠFragment Manager . get Top Fragment (): ĠFragment ? Ġ{ ĊĠĠĠ Ġval Ġf rg Ġ= Ġget FragmentManager Fragments () ĊĠĠĠ Ġreturn Ġf rg . if Empty Ġ{ Ġreturn Ġnull Ġ} [ f rg . size Ġ- Ġ 1 ] Ċ } Ċ Ċ fun ĠFragment Manager . get FragmentManager Fragments (): ĠList < Fragment > Ġ{ ĊĠĠĠ Ġreturn Ġthis . fragments Ċ } Ċ Ċ inline Ġfun Ġ< re ified ĠT Ġ: ĠFragment > ĠFragment Manager . find Fragment (): ĠFragment ? Ġ{ ĊĠĠĠ Ġreturn Ġthis . find Fragment By Tag ( T :: class . java . name ) Ċ } ĊĊ Ċ fun ĠFragment . dp 2 px ( dp Value : ĠFloat ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġrequire Activity (). dp 2 px ( dp Value ) Ċ } Ċ Ċ fun ĠFragment . dp 2 px ( dp Value : ĠInt ): ĠInt Ġ{ ĊĠĠĠ Ġreturn Ġrequire Activity (). dp 2 px ( dp Value ) Ċ } Ċ Ċ fun ĠFragment . px 2 dp ( px Value : ĠInt ): ĠFloat Ġ{ ĊĠĠĠ Ġreturn Ġrequire Activity (). px 2 dp ( px Value ) Ċ }