package Ġcom . save ur mar che . save ur mar che . ui . view . main . process Ċ Ċ import Ġandroid . os . Build Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . support . design . widget . Bottom Navigation View Ċ import Ġandroid . support . v 4 . app . Fragment Ċ import Ġandroid . transition . Explo de Ċ import Ġandroid . transition . Transition Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . Window Ċ import Ġcom . save ur mar che . save ur mar che . R Ċ import Ġcom . save ur mar che . save ur mar che . ui . view . base . Base Activity Ċ import Ġcom . save ur mar che . save ur mar che . ui . view . main . tabs . maps . Mark ets Map Fragment Ċ import Ġcom . save ur mar che . save ur mar che . ui . view . main . tabs . mark ets . Mark ets Fragment Ċ Ċ class ĠMainActivity Ġ: ĠBase Activity () Ġ{ ĊĠĠĠ Ġcompanion Ġobject Ġ{ ĊĠĠĠĠĠĠĠ Ġprivate Ġconst Ġval ĠSELECT ED _ ITEM Ġ= Ġ" arg _ selected _ item " ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠ Ġ** ĠPrivate Ġfield ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġval Ġm Items Ġ= Ġhash Map Of ( ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ maps Ġto Ġobject Ġ: ĠBar Item () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġfragment : ĠFragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠMark ets Map Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ}, ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . id . action _ market Ġto Ġobject Ġ: ĠBar Item () Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġval Ġfragment : ĠFragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġget () Ġ= ĠMark ets Fragment . newInstance () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ) ĊĊĠĠĠ Ġprivate Ġvar Ġm SelectedItem : ĠInt Ġ= Ġ 0 ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Bottom Navigation View : ĠBottom Navigation View ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠ Ġ** ĠLife Ġcycle ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġget Layout Resource (): ĠInt Ġ{ ĊĠĠĠĠĠĠĠ Ġreturn ĠR . layout . activity _ main ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Pre Inf late ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsetup Transition () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġinit ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġm Bottom Navigation View Ġ= ĠfindViewById ( R . id . MainActivity Bottom Navigation View ) ĊĠĠĠĠĠĠĠ Ġm Bottom Navigation View . animation Ġ= Ġnull ĊĊĠĠĠĠĠĠĠ Ġsetup Bottom Nav () ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ!= Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġold Index Ġ= ĠsavedInstanceState . getInt ( SELECTED _ ITEM , Ġ 0 ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Fragment ( m Bottom Navigation View . menu . find Item ( old Index )) ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Fragment ( m Bottom Navigation View . menu . getItem ( 0 )) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Save InstanceState ( out State : ĠBundle ) Ġ{ ĊĠĠĠĠĠĠĠ Ġout State . put Int ( SELECTED _ ITEM , Ġm SelectedItem ) ĊĠĠĠĠĠĠĠ Ġsuper . on Save InstanceState ( out State ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Back Pressed () Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġfirst Item Ġ= Ġm Bottom Navigation View . menu . getItem ( 0 ) ĊĠĠĠĠĠĠĠ Ġif Ġ( m SelectedItem Ġ== Ġfirst Item . itemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Back Pressed () ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Fragment ( first Item ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/* ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠ Ġ** ĠPrivate Ġfun ĊĠĠĠ Ġ***************************************************************** ************************ ******* ĊĠĠĠ Ġ*/ ĊĠĠĠ Ġprivate Ġfun Ġsetup Transition () Ġ{ ĊĠĠĠĠĠĠĠ Ġif Ġ( Build . VERSION . SDK _ INT Ġ>= ĠBuild . VERSION _ CODES . LO L LI POP ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwith ( window ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġrequest Feature ( Window . FEATURE _ CONTENT _ TRANS ITION S ) ĊĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// set Ġthe Ġtransition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġtransition : ĠTransition Ġ= ĠExplo de () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġtransition . duration Ġ= Ġ 5 0 0 0 ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġenter Transition Ġ= Ġtransition ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġexit Transition Ġ= Ġtransition ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Bottom Nav () Ġ{ ĊĠĠĠĠĠĠĠ Ġm Bottom Navigation View . setOn Navigation ItemSelected Listener Ġ{ Ġitem Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġselect Fragment ( item ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġselect Fragment ( item : ĠMenuItem ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval ĠitemId Ġ= Ġitem . itemId ĊĊĠĠĠĠĠĠĠ Ġif Ġ( m SelectedItem Ġ!= ĠitemId ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġupdate Ġselected Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm SelectedItem Ġ= ĠitemId ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġun check Ġthe Ġother Ġitems . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ( 0 Ġuntil Ġm Bottom Navigation View . menu . size () Ġ- Ġ 1 ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. map Ġ{ Ġm Bottom Navigation View . menu . getItem ( it ) Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. forEach Ġ{ Ġit . isChecked Ġ= Ġ( it . itemId Ġ== ĠitemId ) Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Update Ġtoolbar Ġtitle ĊĠĠĠĠĠĠĠĠĠĠĠ Ġupdate Toolbar Text ( item . title ) ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// Show Ġfragment Ġlink Ġto Ġthe Ġselected Ġitem ĊĠĠĠĠĠĠĠĠĠĠĠ Ġshow Fragment ( itemId ) ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġupdate Toolbar Text ( text : ĠCharSequence ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsupport ActionBar ?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġit . title Ġ= Ġtext ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġshow Fragment ( itemId : ĠInt ) Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġcontainer Id Ġ= ĠR . id . MainActivity Container ĊĠĠĠĠĠĠĠ Ġval Ġtag Ġ= Ġ"$ itemId " ĊĠĠĠĠĠĠĠ Ġval Ġtransaction Ġ= Ġsupport FragmentManager . beginTransaction () ĊĊĠĠĠĠĠĠĠ Ġ// Hide Ġold Ġone ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment ById ( container Id )?. let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtransaction . hide ( it ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Show Ġnew Ġfragment ĊĠĠĠĠĠĠĠ Ġsupport FragmentManager . find Fragment By Tag ( tag ). let Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġwhen Ġ( it ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġnull Ġ-> Ġtransaction . add ( container Id , Ġm Items [ itemId ] !!. fragment , Ġtag ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġelse Ġ-> Ġtransaction . show ( it ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĊĊĠĠĠĠĠĠĠ Ġtransaction . commit () ĊĠĠĠ Ġ} Ċ }