package Ġcom . kor il in . con cent ration _ detection Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroidx . activity . view Models Ċ import Ġandroidx . fragment . app . Fragment Activity Ċ import Ġandroidx . view pager 2 . adapter . Fragment State Adapter Ċ import Ġandroidx . view pager 2 . widget . ViewPager 2 Ċ import Ġcom . google . android . material . tabs . Tab Layout Ċ import Ġcom . google . android . material . tabs . Tab Layout Mediator Ċ import Ġcom . kor il in . con cent ration _ detection . databinding . Activity Main Binding Ċ import Ġcom . kor il in . con cent ration _ detection . fragment . home . Con cent ration Fragment Ċ import Ġcom . kor il in . con cent ration _ detection . fragment . home . Statistics Fragment Ċ import Ġcom . kor il in . con cent ration _ detection . view model . Main ViewModel Ċ Ċ val Ġtab Name Ġ= ĠarrayOf ( R . string . con cent ration _ tab _ name , ĠR . string . statistics _ tab _ name ) Ċ Ċ /** Ċ Ġ* Ġ ä¸» é¡µ Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠFragment Activity () Ġ{ ĊĊĠĠĠ Ġlateinit Ġvar Ġview Binding : ĠActivity Main Binding ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhome Tab Layout : ĠTab Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġhome ViewPager : ĠView Pager 2 ĊĠĠĠ Ġprivate Ġval ĠviewModel Ġ: ĠMain ViewModel Ġby Ġview Models () ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĊĠĠĠĠĠĠĠ ĠLog . d (" MainActivity ", Ġ" Thread Ġ= Ġ${ Thread . currentThread (). name }") ĊĊĠĠĠĠĠĠĠ Ġview Binding Ġ= ĠActivity Main Binding . inflate ( layout Inflater ). also Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome Tab Layout Ġ= Ġit . home Table Layout ĊĠĠĠĠĠĠĠĠĠĠĠ Ġhome ViewPager Ġ= Ġit . home ViewPager ĊĠĠĠĠĠĠĠĠĠĠĠ ĠsetContentView ( it . root ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġhome ViewPager . adapter Ġ= ĠHome ViewPager 2 Adapter ( this ) ĊĊĠĠĠĠĠĠĠ ĠTab Layout Mediator ( home Tab Layout , Ġhome ViewPager ) Ġ{ Ġtab , Ġposition Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtab . text Ġ= ĠgetString ( tab Name [ position ]) ĊĠĠĠĠĠĠĠ Ġ}. attach () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġinner Ġclass ĠHome ViewPager 2 Adapter ( fragment : ĠFragment Activity ) Ġ: ĠFragment State Adapter ( fragment ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġthe Ġtotal Ġnumber Ġof Ġitems Ġin Ġthe Ġdata Ġset Ġheld Ġby Ġthe Ġadapter . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ return ĠThe Ġtotal Ġnumber Ġof Ġitems Ġin Ġthis Ġadapter . ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem Count () Ġ= Ġtab Name . size ĊĊĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠ Ġ* ĠProvide Ġa Ġnew ĠFragment Ġassociated Ġwith Ġthe Ġspecified Ġposition . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġadapter Ġwill Ġbe Ġresponsible Ġfor Ġthe ĠFragment Ġlifecycle : ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ* ĠThe ĠFragment Ġwill Ġbe Ġused Ġto Ġdisplay Ġan Ġitem . ĊĠĠĠĠĠĠĠĠ Ġ* Ġ Ġ* ĠThe ĠFragment Ġwill Ġbe Ġdestroyed Ġwhen Ġit Ġgets Ġtoo Ġfar Ġfrom Ġthe Ġviewport , Ġand Ġits Ġstate ĊĠĠĠĠĠĠĠĠ Ġ* Ġwill Ġbe Ġsaved . ĠWhen Ġthe Ġitem Ġis Ġclose Ġto Ġthe Ġviewport Ġagain , Ġa Ġnew ĠFragment Ġwill Ġbe ĊĠĠĠĠĠĠĠĠ Ġ* Ġrequested , Ġand Ġa Ġpreviously Ġsaved Ġstate Ġwill Ġbe Ġused Ġto Ġinitialize Ġit . ĊĠĠĠĠĠĠĠĠ Ġ* ĊĠĠĠĠĠĠĠĠ Ġ* Ġ@ see ĠView Pager 2 . set Off screen Page Limit ĊĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġcreate Fragment ( position : ĠInt ) Ġ= Ġwhen Ġ( position ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠ 0 Ġ-> ĠCon cent ration Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠĠ 1 Ġ-> ĠStatistics Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġthrow ĠNo Class Def Found Error (" No Ġcorresponding ĠFragment Ġis Ġavailable Ġ ï¼ļ position =$ position ") ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} Ċ Ċ }