package Ġcom . k yle cor ry . trail _ sense Ċ Ċ import Ġandroid . content . Intent Ċ import Ġandroid . content . SharedPreferences Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . widget . Button Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . core . content . edit Ċ import Ġandroidx . fragment . app . Fragment Ċ import Ġandroidx . preference . Preference Manager Ċ import Ġcom . k yle cor ry . trail _ sense . databinding . Activity On boarding Binding Ċ import Ġcom . k yle cor ry . tr ails ense core . infrastructure . sensors . Sensor Checker Ċ import Ġcom . k yle cor ry . tr ails ense core . infrastructure . system . do Transaction ĊĊ Ċ class ĠOn boarding Activity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġprefs : ĠSharedPreferences ĊĊĠĠĠ Ġprivate Ġval Ġpages Ġ= ĠlistOf ( ĊĠĠĠĠĠĠĠ ĠR . layout . fragment _ on boarding _ navigation , ĊĠĠĠĠĠĠĠ ĠR . layout . fragment _ on boarding _ weather , ĊĠĠĠĠĠĠĠ ĠR . layout . fragment _ on boarding _ astr onomy , ĊĠĠĠĠĠĠĠ ĠR . layout . fragment _ on boarding _ background _ location ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġvar Ġpage Idx Ġ= Ġ 0 ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠActivity On boarding Binding . inflate ( layout Inflater ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( binding . root ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhas Bar ometer Ġ= ĠSensor Checker ( this ). has Bar ometer () ĊĊĠĠĠĠĠĠĠ Ġprefs Ġ= ĠPreference Manager . getDefault SharedPreferences ( this ) ĊĊĠĠĠĠĠĠĠ Ġswitch Fragment ( pages [ page Idx ]) ĊĊĠĠĠĠĠĠĠ Ġbinding . next Button . setOnClickListener Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Idx ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! has Bar ometer Ġ&& Ġpage Idx Ġ== Ġpages . indexOf ( R . layout . fragment _ on boarding _ weather )){ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġpage Idx ++ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( page Idx Ġ>= Ġpages . size ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnavigate To App () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġswitch Fragment ( pages [ page Idx ]) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġnavigate To App () Ġ{ ĊĠĠĠĠĠĠĠ Ġprefs . edit Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġput Boolean ( getString ( R . string . pref _ on boarding _ completed ), Ġtrue ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ ĠstartActivity ( Intent ( this , ĠMainActivity :: class . java )) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Restore InstanceState ( savedInstanceState : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Restore InstanceState ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġpage Idx Ġ= ĠsavedInstanceState . getInt (" page ", Ġ 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( page Idx Ġ>= Ġpages . size Ġ|| Ġpage Idx Ġ< Ġ 0 ){ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġpage Idx Ġ= Ġ 0 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġswitch Fragment ( pages [ page Idx ]) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠĠĠĠĠ Ġout State . put Int (" page ", Ġpage Idx ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġswitch Fragment ( layout : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . do Transaction Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis . replace ( R . id . fragment _ holder , ĠFragment ( layout )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcount Ġ= Ġsupport FragmentManager . back Stack Entry Count ĊĊĠĠĠĠĠĠĠ Ġif Ġ( count Ġ== Ġ 0 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// additional Ġcode ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . pop Back Stack Immediate () ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ Ċ } Ċ