package Ġcom . sport . ui . fragment Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . LayoutInflater Ċ import Ġandroid . view . View Ċ import Ġandroid . view . ViewGroup Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . fragment . app . FragmentManager Ċ import Ġandroidx . fragment . app . Fragment Pager Adapter Ċ import Ġandroidx . lifecycle . ViewModel Providers Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ import Ġcom . sport . utilities . Injector Utils Ċ import Ġcom . sport . databinding . Fragment Sport Binding Ċ import Ġcom . sport . ui . activity . MainActivity Ċ import Ġcom . sport . view models . Sport ViewModel Ċ import Ġtim ber . log . Tim ber Ċ import Ġkotlin . collections . ArrayList Ċ Ċ /** Ċ Ġ* ĠUser : Ġb ize hao Ċ Ġ* ĠDate : Ġ 2 0 1 9 - 0 3 - 1 2 Ċ Ġ* ĠTime : Ġä¸ĭåįĪ 1 : 3 4 Ċ Ġ* ĠDescription : Ġ è¿Ĳ åĬ¨ çķĮéĿ¢ Ċ Ġ*/ Ċ class ĠS port Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar ĠviewModel : ĠS port ViewModel ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġpager Adapter : ĠAdapter ĊĊĠĠĠ Ġprivate Ġvar Ġcurrent Item Ġ= Ġ 1 ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠFragment Sport Binding . inflate ( in flater , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠ Ġval Ġcontext Ġ= Ġcontext Ġ?: Ġreturn Ġbinding . root ĊĠĠĠĠĠĠĠ Ġval Ġfactory Ġ= ĠInject or Utils . provide Sport ViewModel Factory ( context ) ĊĠĠĠĠĠĠĠ ĠviewModel Ġ= ĠViewModel Providers . of ( this , Ġfactory ). get ( Sport ViewModel :: class . java ) ĊĠĠĠĠĠĠĠ Ġsubscribe Ui ( binding ) ĊĠĠĠĠĠĠĠ Ġreturn Ġbinding . root ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsubscribe Ui ( binding : ĠFragment Sport Binding ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġactivity Ġ= Ġactivity Ġas ĠMainActivity ĊĠĠĠĠĠĠĠ Ġactivity . set MainActivity ActionBar ( binding . toolbar ) ĊĠĠĠĠĠĠĠ Ġpager Adapter Ġ= ĠAdapter ( child FragmentManager ) ĊĠĠĠĠĠĠĠ Ġpager Adapter . add Fragment ( Data Fragment (), Ġ" æķ°æį® ") ĊĠĠĠĠĠĠĠ Ġpager Adapter . add Fragment ( Index Fragment (), Ġ" ä¸» é¡µ ") ĊĠĠĠĠĠĠĠ Ġpager Adapter . add Fragment ( Plan Fragment (), Ġ" è®¡åĪĴ ") ĊĠĠĠĠĠĠĠ Ġbinding . view pager . adapter Ġ= Ġpager Adapter ĊĠĠĠĠĠĠĠ Ġbinding . view pager . off screen Page Limit Ġ= Ġ 3 ĊĠĠĠĠĠĠĠ Ġbinding . view pager . currentItem Ġ= Ġcurrent Item ĊĠĠĠĠĠĠĠ Ġbinding . tabs . setup With ViewPager ( binding . view pager ) ĊĠĠĠĠĠĠĠ Ġbinding . tabs . add On Tab Selected Listener ( object Ġ: ĠTab Layout . ViewPager On Tab Selected Listener ( binding . view pager ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Tab Selected ( tab : ĠTab Layout . Tab ?) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Tab Selected ( tab ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( tab Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġcurrent Item Ġ= Ġtab . position ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ}) ĊĠĠĠĠĠĠĠ Ġbinding . float Btn . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Event ( it , currentItem ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinternal Ġclass ĠAdapter ( fm : ĠFragment Manager ) Ġ: ĠFragment Pager Adapter ( fm ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Fragments Ġ= ĠArrayList < Fragment >() ĊĠĠĠĠĠĠĠ Ġprivate Ġval Ġm Fragment Titles Ġ= ĠArrayList < String >() ĊĊĠĠĠĠĠĠĠ Ġfun Ġadd Fragment ( fragment : ĠFragment , Ġtitle : ĠString ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Fragments . add ( fragment ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Fragment Titles . add ( title ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Fragments [ position ] ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Fragments . size ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Page Title ( position : ĠInt ): ĠCharSequence ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġm Fragment Titles [ position ] ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswitch Event ( view : ĠView , Ġid : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġwhen Ġ( id ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdirection Ġ= ĠS port Fragment Directions . action Sport Fragment To Running Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview . find Nav Controller (). navigate ( direction ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ }