/* Ċ Ġ* ĠCopyright Ġ( C ) Ġ 2 0 1 8 ĠThe ĠAndroid ĠOpen ĠSource ĠProject Ċ Ġ* Ċ Ġ* ĠLicensed Ġunder Ġthe ĠApache ĠLicense , ĠVersion Ġ 2 . 0 Ġ( the Ġ" License "); Ċ Ġ* Ġyou Ġmay Ġnot Ġuse Ġthis Ġfile Ġexcept Ġin Ġcompliance Ġwith Ġthe ĠLicense . Ċ Ġ* ĠYou Ġmay Ġobtain Ġa Ġcopy Ġof Ġthe ĠLicense Ġat Ċ Ġ* Ċ Ġ* ĠĠĠĠĠ Ġhttp :// www . apache . org / licenses / LICENSE - 2 . 0 Ċ Ġ* Ċ Ġ* ĠUnless Ġrequired Ġby Ġapplicable Ġlaw Ġor Ġagreed Ġto Ġin Ġwriting , Ġsoftware Ċ Ġ* Ġdistributed Ġunder Ġthe ĠLicense Ġis Ġdistributed Ġon Ġan Ġ" AS ĠIS " ĠBASIS , Ċ Ġ* ĠWITHOUT ĠWARRANTIES ĠOR ĠCONDITIONS ĠOF ĠANY ĠKIND , Ġeither Ġexpress Ġor Ġimplied . Ċ Ġ* ĠSee Ġthe ĠLicense Ġfor Ġthe Ġspecific Ġlanguage Ġgoverning Ġpermissions Ġand Ċ Ġ* Ġlimitations Ġunder Ġthe ĠLicense . Ċ Ġ*/ Ċ Ċ package Ġcom . example . android . code labs . navigation Ċ Ċ import Ġandroid . content . res . Resources Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . util . Log Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . widget . Toast Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . fragment . Nav Host Fragment Ċ import Ġandroidx . navigation . ui .* Ċ import Ġcom . google . android . material . bottomnavigation . Bottom Navigation View Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ Ċ /** Ċ Ġ* ĠA Ġsimple Ġactivity Ġdemonstr ating Ġuse Ġof Ġa ĠNav Host Fragment Ġwith Ġa Ġnavigation Ġdrawer . Ċ Ġ*/ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġvar Ġdrawer Layout : ĠDraw er Layout ? Ġ= Ġnull ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . navigation _ activity ) ĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < Toolbar >( R . id . toolbar ) ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġval Ġhost : ĠNav Host Fragment Ġ= Ġsupport FragmentManager ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. find Fragment ById ( R . id . my _ nav _ host _ fragment ) Ġas ĠNav Host Fragment ? Ġ?: Ġreturn ĊĊĠĠĠĠĠĠĠ Ġ// ĠSet Ġup ĠAction ĠBar ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġhost . nav Controller ĊĠĠĠĠĠĠĠ Ġsetup ActionBar ( nav Controller ) ĊĊĠĠĠĠĠĠĠ Ġsetup Navigation Menu ( nav Controller ) ĊĊĠĠĠĠĠĠĠ Ġsetup Bottom Nav Menu ( nav Controller ) ĊĊĠĠĠĠĠĠĠ Ġnav Controller . add On Navig ated Listener Ġ{ Ġ_, Ġdestination Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġdest : ĠString Ġ= Ġtry Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġresources . getResource Name ( destination . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġcatch Ġ( e : ĠResources . NotFoundException ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠInteger . toString ( destination . id ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ ĠToast . makeText ( this @ MainActivity , Ġ" Navig ated Ġto Ġ$ dest ", ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ ĠToast . LENGTH _ SHORT ). show () ĊĠĠĠĠĠĠĠĠĠĠĠ ĠLog . d (" Navigation Activity ", Ġ" Navig ated Ġto Ġ$ dest ") ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Bottom Nav Menu ( nav Controller : ĠNav Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠSTEP Ġ 9 . 3 Ġ- ĠUse ĠNavigation UI Ġto Ġset Ġup ĠBottom ĠNav ĊĠĠĠĠĠĠĠ Ġval Ġbottom Nav Ġ= ĠfindViewById < Bottom Navigation View >( R . id . bottom _ nav _ view ) ĊĠĠĠĠĠĠĠ Ġbottom Nav ?. setup With Nav Controller ( nav Controller ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠEND ĠSTEP Ġ 9 . 3 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup Navigation Menu ( nav Controller : ĠNav Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠSTEP Ġ 9 . 4 Ġ- ĠUse ĠNavigation UI Ġto Ġset Ġup Ġa ĠNavigation ĠView ĊĠĠĠĠĠĠĠ Ġ// ĠIn Ġsplit Ġscreen Ġmode , Ġyou Ġcan Ġdrag Ġthis Ġview Ġout Ġfrom Ġthe Ġleft ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġdoes ĠNOT Ġmodify Ġthe Ġaction bar ĊĠĠĠĠĠĠĠ Ġval Ġside Nav View Ġ= ĠfindViewById < Navigation View >( R . id . nav _ view ) ĊĠĠĠĠĠĠĠ Ġside Nav View ?. setup With Nav Controller ( nav Controller ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠEND ĠSTEP Ġ 9 . 4 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġprivate Ġfun Ġsetup ActionBar ( nav Controller : ĠNav Controller ) Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠSTEP Ġ 9 . 5 Ġ- ĠHave ĠNavigation UI Ġhandle Ġwhat Ġyour ĠAction Bar Ġdisplays ĊĠĠĠĠĠĠĠ Ġ// ĠThis Ġallows ĠNavigation UI Ġto Ġdecide Ġwhat Ġlabel Ġto Ġshow Ġin Ġthe Ġaction Ġbar ĊĠĠĠĠĠĠĠ Ġ// ĠAnd , Ġsince Ġwe Ġare Ġpassing Ġin Ġdrawer Layout , Ġit Ġwill Ġalso Ġdetermine Ġwhether Ġto ĊĠĠĠĠĠĠĠ Ġ// Ġshow Ġthe Ġup Ġarrow Ġor Ġdrawer Ġmenu Ġicon ĊĠĠĠĠĠĠĠ Ġdrawer Layout Ġ= ĠfindViewById ( R . id . drawer _ layout ) ĊĠĠĠĠĠĠĠ Ġsetup ActionBar With Nav Controller ( nav Controller , Ġdrawer Layout ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠEND ĠSTEP Ġ 9 . 5 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate Options Menu ( menu : ĠMenu ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġval Ġret Value Ġ= Ġsuper . onCreate Options Menu ( menu ) ĊĠĠĠĠĠĠĠ Ġval Ġnavigation View Ġ= ĠfindViewById < Navigation View >( R . id . nav _ view ) ĊĠĠĠĠĠĠĠ Ġ// ĠThe ĠNavigation View Ġalready Ġhas Ġthese Ġsame Ġnavigation Ġitems , Ġso Ġwe Ġonly Ġadd ĊĠĠĠĠĠĠĠ Ġ// Ġnavigation Ġitems Ġto Ġthe Ġmenu Ġhere Ġif Ġthere Ġisn 't Ġa ĠNavigation View ĊĠĠĠĠĠĠĠ Ġif Ġ( navigation View Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġmenu Inflater . inflate ( R . menu . overflow _ menu , Ġmenu ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġreturn Ġtrue ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġreturn Ġret Value ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Options ItemSelected ( item : ĠMenuItem ): ĠBoolean Ġ{ ĊĠĠĠĠĠĠ Ġ// Ġreturn Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠSTEP Ġ 9 . 2 Ġ- ĠHave ĠNavigation ĠUI ĠHandle Ġthe Ġitem Ġselection Ġ- Ġmake Ġsure Ġto Ġdelete ĊĠĠĠĠĠĠĠ Ġ// Ġ Ġthe Ġold Ġreturn Ġstatement Ġabove ĊĠĠĠĠĠĠĠ Ġ// ĠHave Ġthe ĠNavigation UI Ġlook Ġfor Ġan Ġaction Ġor Ġdestination Ġmatching Ġthe Ġmenu ĊĠĠĠĠĠĠĠ Ġ// Ġitem Ġid Ġand Ġnavigate Ġthere Ġif Ġfound . ĊĠĠĠĠĠĠĠ Ġ// ĠOtherwise , Ġbubble Ġup Ġto Ġthe Ġparent . ĊĠĠĠĠĠĠĠ Ġreturn Ġitem . on Nav Destination Selected ( find Nav Controller ( R . id . my _ nav _ host _ fragment )) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ|| Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠĠĠĠĠ Ġ// ĠTODO ĠEND ĠSTEP Ġ 9 . 2 ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// ĠTODO ĠSTEP Ġ 9 . 6 Ġ- ĠHave ĠNavigation UI Ġhandle Ġup Ġbehavior Ġin Ġthe ĠAction Bar ĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// ĠAllows ĠNavigation UI Ġto Ġsupport Ġproper Ġup Ġnavigation Ġor Ġthe Ġdrawer Ġlayout ĊĠĠĠĠĠĠĠ Ġ// Ġdrawer Ġmenu , Ġdepending Ġon Ġthe Ġsituation ĊĠĠĠĠĠĠ Ġ// Ġreturn Ġdrawer Layout . navigate Up ( find Nav Controller ( R . id . my _ nav _ host _ fragment )) ĊĠĠĠĠĠĠĠ Ġreturn ĠNavigation UI . navigate Up ( drawer Layout , ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġfind Nav Controller ( ĠR . id . my _ nav _ host _ fragment )) ĊĠĠĠ Ġ} ĊĠĠĠ Ġ// ĠTODO ĠEND ĠSTEP Ġ 9 . 6 Ċ } Ċ