package Ġcom . dub ed iv ine . samples . features . main Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Snackbar Ċ import Ġandroid . support . design . widget . Tab Layout Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . support . v 4 . app . FragmentManager Ċ import Ġandroid . support . v 4 . app . Fragment Pager Adapter Ċ import Ġandroid . support . v 7 . app . AppCompatActivity Ċ import Ġandroid . view .* Ċ import Ġcom . dub ed iv ine . samples . R Ċ import Ġkotlinx . android . synt hetic . main . activity _ demo .* Ċ import Ġkotlinx . android . synt hetic . main . fragment _ demo . view .* Ċ Ċ class ĠDemo Act Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠThe Ġ[ android . support . v 4 . view . Pager Adapter ] Ġthat Ġwill Ġprovide ĊĠĠĠĠ Ġ* Ġfragments Ġfor Ġeach Ġof Ġthe Ġsections . ĠWe Ġuse Ġa ĊĠĠĠĠ Ġ* Ġ{@ link ĠFragment Pager Adapter } Ġderivative , Ġwhich Ġwill Ġkeep Ġevery ĊĠĠĠĠ Ġ* Ġloaded Ġfragment Ġin Ġmemory . ĠIf Ġthis Ġbecomes Ġtoo Ġmemory Ġint ensive , Ġit ĊĠĠĠĠ Ġ* Ġmay Ġbe Ġbest Ġto Ġswitch Ġto Ġa ĊĠĠĠĠ Ġ* Ġ[ android . support . v 4 . app . Fragment State Pager Adapter ]. ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġvar Ġm Sections Pager Adapter : ĠSe ctions Pager Adapter ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ demo ) ĊĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĠĠĠĠĠĠĠ Ġ// ĠCreate Ġthe Ġadapter Ġthat Ġwill Ġreturn Ġa Ġfragment Ġfor Ġeach Ġof Ġthe Ġthree ĊĠĠĠĠĠĠĠ Ġ// Ġprimary Ġsections Ġof Ġthe Ġactivity . ĊĠĠĠĠĠĠĠ Ġm Sections Pager Adapter Ġ= ĠSe ctions Pager Adapter ( support FragmentManager ) ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup Ġthe ĠView Pager Ġwith Ġthe Ġsections Ġadapter . ĊĠĠĠĠĠĠĠ Ġcontainer . adapter Ġ= Ġm Sections Pager Adapter ĊĊĠĠĠĠĠĠĠ Ġcontainer . add On Page ChangeListener ( Tab Layout . Tab Layout On Page ChangeListener ( tabs )) ĊĠĠĠĠĠĠĠ Ġtabs . add On Tab Selected Listener ( Tab Layout . ViewPager On Tab Selected Listener ( container )) ĊĊĠĠĠĠĠĠĠ Ġfab . setOnClickListener Ġ{ Ġview Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ ĠSn ackbar . make ( view , Ġ" Replace Ġwith Ġyour Ġown Ġaction ", ĠSn ackbar . LENGTH _ LONG ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. setAction (" Action ", Ġnull ). show () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠInf late Ġthe Ġmenu ; Ġthis Ġadds Ġitems Ġto Ġthe Ġaction Ġbar Ġif Ġit Ġis Ġpresent . ĊĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . menu _ demo , Ġmenu ) ĊĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠHandle Ġaction Ġbar Ġitem Ġclicks Ġhere . ĠThe Ġaction Ġbar Ġwill ĊĠĠĠĠĠĠĠ Ġ// Ġautomatically Ġhandle Ġclicks Ġon Ġthe ĠHome / Up Ġbutton , Ġso Ġlong ĊĠĠĠĠĠĠĠ Ġ// Ġas Ġyou Ġspecify Ġa Ġparent Ġactivity Ġin ĠAndroid Manifest . xml . ĊĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġitem . itemId ĊĊĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . action _ settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġ[ Fragment Pager Adapter ] Ġthat Ġreturns Ġa Ġfragment Ġcorresponding Ġto ĊĠĠĠĠ Ġ* Ġone Ġof Ġthe Ġsections / tabs / pages . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġinner Ġclass ĠSe ctions Pager Adapter ( fm : ĠFragment Manager ) Ġ: ĠFragment Pager Adapter ( fm ) Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠgetItem ( position : ĠInt ): ĠFragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠgetItem Ġis Ġcalled Ġto Ġinstantiate Ġthe Ġfragment Ġfor Ġthe Ġgiven Ġpage . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠReturn Ġa ĠPlace holder Fragment Ġ( defined Ġas Ġa Ġstatic Ġinner Ġclass Ġbelow ). ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn ĠPlace holder Fragment . newInstance ( position Ġ+ Ġ 1 ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun Ġget Count (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠShow Ġ 3 Ġtotal Ġpages . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġ 3 ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠA Ġplaceholder Ġfragment Ġcontaining Ġa Ġsimple Ġview . ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġclass ĠPlace holder Fragment Ġ: ĠFragment () Ġ{ ĊĊĠĠĠĠĠĠĠ Ġoverride Ġfun ĠonCreate View ( in flater : ĠLayoutInflater , Ġcontainer : ĠViewGroup ?, ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠsavedInstanceState : ĠBundle ?): ĠView ? Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġroot View Ġ= Ġinflater . inflate ( R . layout . fragment _ demo , Ġcontainer , Ġfalse ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġroot View . section _ label . text Ġ= ĠgetString ( R . string . section _ format , Ġarguments !!. getInt ( ARG _ SECTION _ NUMBER )) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġroot View ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠThe Ġfragment Ġargument Ġrepresenting Ġthe Ġsection Ġnumber Ġfor Ġthis ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġfragment . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġprivate Ġval ĠARG _ SECTION _ NUMBER Ġ= Ġ" section _ number " ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ/** ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* ĠReturns Ġa Ġnew Ġinstance Ġof Ġthis Ġfragment Ġfor Ġthe Ġgiven Ġsection ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ* Ġnumber . ĊĠĠĠĠĠĠĠĠĠĠĠĠ Ġ*/ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfun Ġnew Instance ( section Number : ĠInt ): ĠPlace holder Fragment Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġfragment Ġ= ĠPlace holder Fragment () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġargs Ġ= ĠBundle () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġargs . put Int ( ARG _ SECTION _ NUMBER , Ġsection Number ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfragment . arguments Ġ= Ġargs ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} Ċ } Ċ