package Ġcom . chen cc . android stud yn otes code . lazy fragment čĊč Ċ import Ġandroid . os . Bundle č Ċ import Ġandroid . util . Log č Ċ import Ġandroid . view . View . GONE č Ċ import Ġandroid . view . View . VISIBLE č Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View č Ċ import Ġandroidx . appcompat . app . AppCompatActivity č Ċ import Ġandroidx . fragment . app . Fragment č Ċ import Ġandroidx . fragment . app . Fragment Activity č Ċ import Ġandroidx . fragment . app . FragmentManager č Ċ import Ġandroidx . navigation . find Nav Controller č Ċ import Ġandroidx . navigation . ui . AppBar Configuration č Ċ import Ġandroidx . navigation . ui . setup ActionBar With Nav Controller č Ċ import Ġandroidx . navigation . ui . setup With Nav Controller č Ċ import Ġandroidx . view pager . widget . ViewPager č Ċ import Ġandroidx . view pager 2 . adapter . Fragment State Adapter č Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 č Ċ import Ġcom . chen cc . android stud yn otes code . R č Ċ import Ġcom . chen cc . android stud yn otes code . adapter . ViewPager 2 Adapter č Ċ import Ġcom . chen cc . android stud yn otes code . adapter . ViewPager Adapter č Ċ import Ġkotlinx . android . synt hetic . main . activity _ lazy _ fragment 1 .* čĊč Ċ /** čĊ Ġ* Ġview Pager čĊ Ġ* ĠView Pager 2 čĊ Ġ*/ č Ċ class ĠLazy Fragment 1 Activity Ġ: ĠAppCompatActivity () Ġ{ čĊčĊĠĠĠ Ġprivate Ġval Ġm Fragment 1 Ġby Ġlazy Ġ{ Ġmutable ListOf < Fragment >(). apply Ġ{ čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 1 . newInstance ( 1 )) čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 1 . newInstance ( 2 )) čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 1 . newInstance ( 3 )) čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 1 . newInstance ( 4 )) čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 1 . newInstance ( 5 )) čĊĠĠĠ Ġ} Ġ} čĊĠĠĠ Ġprivate Ġval Ġm Fragment 2 Ġby Ġlazy Ġ{ Ġmutable ListOf < Fragment >(). apply Ġ{ čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 2 . newInstance ( 1 )) čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 2 . newInstance ( 2 )) čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 2 . newInstance ( 3 )) čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 2 . newInstance ( 4 )) čĊĠĠĠĠĠĠĠ Ġadd ( My Fragment 2 . newInstance ( 5 )) čĊĠĠĠ Ġ} Ġ} čĊĠĠĠ Ġprivate Ġval Ġadapter Ġby Ġlazy Ġ{ ĠView Pager Adapter ( support FragmentManager , Ġm Fragment 1 ) Ġ} čĊĠĠĠ Ġprivate Ġval Ġadapter 2 Ġby Ġlazy Ġ{ ĠView Pager 2 Adapter ( this @ Lazy Fragment 1 Activity , Ġm Fragment 2 ) Ġ} čĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ čĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) čĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ lazy _ fragment 1 ) čĊčĊĠĠĠĠĠĠĠ Ġval Ġtype Ġ= Ġintent . getInt Extra ( FRAGMENT _ TYPE , Ġ 1 ) čĊĠĠĠĠĠĠĠ ĠLog . e (" TAG ", Ġ" onCreate : ĠĠĠ Ġ$ type " Ġ) čĊĠĠĠĠĠĠĠ Ġwhen ( type ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> { čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 . visibility Ġ= ĠG ONE čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . visibility Ġ= ĠVIS IBLE čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp 1 () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠ 2 Ġ-> { čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . visibility Ġ= ĠG ONE čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 . visibility Ġ= ĠVIS IBLE čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġvp 2 () čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġview Pager 1 čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġvp 1 (){ čĊĠĠĠĠĠĠĠ Ġnav View . setOn Navigation ItemSelected Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . itemId ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 1 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( 0 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 2 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( 1 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 3 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( 2 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 4 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( 3 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 5 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager . setCurrent Item ( 4 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġview Pager . adapter Ġ= Ġadapter čĊĠĠĠĠĠĠĠ Ġview Pager . add On Page ChangeListener ( object Ġ: ĠView Pager . On Page ChangeListener { čĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Scroll StateChanged ( state : ĠInt ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Sc rolled ( position : ĠInt , Ġposition Offset : ĠFloat , Ġposition Offset Pixels : ĠInt ) Ġ{ čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav View . selected ItemId Ġ= Ġposition čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ}) čĊĠĠĠ Ġ} čĊčĊĠĠĠ Ġ/** čĊĠĠĠĠ Ġ* Ġview čĊĠĠĠĠ Ġ*/ čĊĠĠĠ Ġprivate Ġfun Ġvp 2 (){ čĊĠĠĠĠĠĠĠ Ġnav View . setOn Navigation ItemSelected Listener Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen ( it . itemId ){ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 1 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 . setCurrent Item ( 0 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 2 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 . setCurrent Item ( 1 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 3 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 . setCurrent Item ( 2 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 4 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 . setCurrent Item ( 3 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . navigation _ 5 Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġview Pager 2 . setCurrent Item ( 4 Ġ, Ġtrue ) čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtrue čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfalse čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġ} čĊčĊĠĠĠĠĠĠĠ Ġview Pager 2 . adapter Ġ= Ġadapter 2 čĊĠĠĠĠĠĠĠ Ġview Pager 2 . register On Page Change Callback ( object Ġ: ĠView Pager 2 . On Page Change Callback (){ čĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Page Selected ( position : ĠInt ) Ġ{ čĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnav View . selected ItemId Ġ= Ġposition čĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} čĊĠĠĠĠĠĠĠ Ġ}) č Ċ // ĠĠĠĠĠĠĠ Ġview Pager 2 . off screen Page Limit Ġ= Ġ 5 čĊĠĠĠ Ġ} č Ċ } čĊčĊč Ċ // class ĠView Pager 2 Adapter ( var Ġactivity Ġ: ĠFragment Activity ) Ġ: ĠFragment State Adapter ( activity ) Ġ{ č Ċ // ĠĠĠ Ġoverride Ġfun ĠgetItem Count (): ĠInt Ġ= Ġ 5 č Ċ // č Ċ // č Ċ // ĠĠĠ Ġoverride Ġfun Ġcreate Fragment ( position : ĠInt ): ĠFragment Ġ{ č Ċ // ĠĠĠĠĠĠĠ Ġreturn ĠMy Fragment 2 . newInstance ( position ) č Ċ // ĠĠĠ Ġ} č Ċ //} čĊ