package Ġcom . example . android . navigation Ċ Ċ import Ġandroid . os . Bundle Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroidx . databinding . Data Binding Util Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġandroidx . navigation . Nav Controller Ċ import Ġandroidx . navigation . Nav Destination Ċ import Ġandroidx . navigation . find Nav Controller Ċ import Ġandroidx . navigation . ui . AppBar Configuration Ċ import Ġandroidx . navigation . ui . Navigation UI Ċ import Ġcom . example . android . navigation . databinding . Activity Main Binding Ċ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġdrawer Layout : ĠDraw er Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġapp Bar Configuration : ĠApp Bar Configuration ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ@ Suppress (" UNUSED _ VARIABLE ") ĊĠĠĠĠĠĠĠ Ġval Ġbinding Ġ= ĠData Binding Util . set ContentView < Activity Main Binding >( this , ĠR . layout . activity _ main ) ĊĊĠĠĠĠĠĠĠ Ġaction Bar ?. title Ġ= Ġ" Example Ġ 1 " ĊĊĊĠĠĠĠĠĠĠ Ġ// Ġinit il ize Ġthe Ġdrawer Layout Ġfrom Ġthe Ġbinding Ġvariable ĊĠĠĠĠĠĠĠ Ġdrawer Layout Ġ= Ġbinding . drawer Layout ĊĊĠĠĠĠĠĠĠ Ġ// Ġusing ĠK TX , ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġthis . find Nav Controller ( R . id . my Nav Host Fragment ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġlink ĠNav Controller Ġto ĠAction Bar ĊĠĠĠĠĠĠĠ ĠNavigation UI . setup ActionBar With Nav Controller ( this , Ġnav Controller , Ġdrawer Layout ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġapp Bar Configuration Ġwith Ġthe Ġnav Controller . graph Ġand Ġdrawer Layout ĊĠĠĠĠĠĠĠ Ġapp Bar Configuration Ġ= ĠApp Bar Configuration ( nav Controller . graph , Ġdrawer Layout ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġlock Ġand Ġunlock Ġthe Ġdrawer layout Ġas Ġper ĠNav Dest n ation Ġmatches Ġthe Ġstart Destination Ġof ĊĠĠĠĠĠĠĠ Ġ// Ġof Ġour Ġgraph Ġand Ġthis Ġis Ġdoing Ġwith Ġthe Ġhelp Ġof Ġlambda Ġexpression ĊĠĠĠĠĠĠĠ Ġ// Ġprevent Ġnav Ġgesture Ġif Ġnot Ġon Ġstart Ġdestination ĊĠĠĠĠĠĠĠ Ġnav Controller . add On Destination Changed Listener Ġ{ Ġnc : ĠNav Controller , Ġnd : ĠNav Destination , Ġargs : ĠBundle ? Ġ-> ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif ( nd . id Ġ== Ġnc . graph . start Destination ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout . set Drawer Lock Mode ( Drawer Layout . LOCK _ MODE _ UNLOCK ED ) ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġdrawer Layout . set Drawer Lock Mode ( Drawer Layout . LOCK _ MODE _ LOCK ED _ CLOSED ) ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠ Ġ// Ġlink Ġthe ĠNavigation ĠUI Ġup Ġto Ġnavigation Ġview ĊĠĠĠĠĠĠĠ ĠNavigation UI . setup With Nav Controller ( binding . nav View , Ġnav Controller ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ// Ġtp Ġhandle Ġthe Ġnavigate Up Ġaction Ġfrom Ġour ĠActivity ĊĠĠĠ Ġoverride Ġfun Ġon Support Navigate Up (): ĠBoolean Ġ{ ĊĠĠĠĠĠĠĠ Ġ// Ġusing ĠK TX , ĊĠĠĠĠĠĠĠ Ġval Ġnav Controller Ġ= Ġthis . find Nav Controller ( R . id . my Nav Host Fragment ) ĊĠĠĠĠĠĠĠ Ġreturn ĠNavigation UI . navigate Up ( nav Controller , Ġapp Bar Configuration ) ĊĠĠĠ Ġ} Ċ } Ċ