package Ġedu . cs 4 7 3 0 . draw demo 1 _ kt Ċ Ċ import Ġandroid . content . res . Configuration Ċ import Ġandroidx . appcompat . app . AppCompatActivity Ċ import Ġandroid . os . Bundle Ċ import Ġandroid . view . Menu Ċ import Ġandroid . view . MenuItem Ċ import Ġandroid . view . View Ċ import Ġandroidx . appcompat . app . ActionBar Drawer Toggle Ċ import Ġandroidx . appcompat . widget . Toolbar Ċ import Ġandroidx . drawer layout . widget . Drawer Layout Ċ import Ġcom . google . android . material . navigation . Navigation View Ċ Ċ /** Ċ Ġ* Ġwhile Ġthere Ġis Ġal ot Ġof Ġcode Ġhere , Ġthe Ġexample Ġis Ġactually Ġall Ġin Ġthe Ġfragments . Ċ Ġ* Ġthis Ġis Ġjust Ġto Ġget Ġthe Ġdrawer Ġlayout Ġworking . Ċ Ġ*/ ĊĊ Ċ class ĠMainActivity Ġ: ĠAppCompatActivity () Ġ{ ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Drawer Toggle : ĠAction Bar Drawer Toggle ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Drawer layout : ĠDraw er Layout ĊĠĠĠ Ġprivate Ġlateinit Ġvar Ġm Navigation View : ĠNavigation View ĊĊĠĠĠ Ġoverride Ġfun ĠonCreate ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . onCreate ( savedInstanceState ) ĊĠĠĠĠĠĠĠ ĠsetContentView ( R . layout . activity _ main ) ĊĊĊĠĠĠĠĠĠĠ Ġval Ġtoolbar Ġ= ĠfindViewById < View >( R . id . toolbar ) Ġas ĠToolbar ĊĠĠĠĠĠĠĠ Ġset Support ActionBar ( toolbar ) ĊĊĠĠĠĠĠĠĠ Ġ// Ġenable ĠAction Bar Ġapp Ġicon Ġto Ġbehave Ġas Ġaction Ġto Ġtoggle Ġnav Ġdrawer ĊĊĠĠĠĠĠĠĠ Ġ// Ġenable ĠAction Bar Ġapp Ġicon Ġto Ġbehave Ġas Ġaction Ġto Ġtoggle Ġnav Ġdrawer ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Display Home As Up Enabled ( true ) ĊĠĠĠĠĠĠĠ Ġsupport ActionBar !!. set Home Button Enabled ( true ) ĊĊĠĠĠĠĠĠĠ Ġ// standard Ġnavigation Ġdrawer Ġsetup . ĊĊĠĠĠĠĠĠĠ Ġ// standard Ġnavigation Ġdrawer Ġsetup . ĊĠĠĠĠĠĠĠ Ġm Drawer layout Ġ= ĠfindViewById < View >( R . id . drawer _ layout ) Ġas ĠDraw er Layout ĊĊĠĠĠĠĠĠĠ Ġm Drawer Toggle Ġ= Ġobject Ġ: ĠAction Bar Drawer Toggle ( ĊĠĠĠĠĠĠĠĠĠĠĠ Ġthis , Ġ Ġ// Ġhost Ġactivity ĊĠĠĠĠĠĠĠĠĠĠĠ Ġm Drawer layout , Ġ Ġ// drawer layout Ġobject ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtoolbar , Ġ Ġ// toolbar ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . drawer _ open , Ġ Ġ// open Ġdrawer Ġdescription Ġ Ġrequired ! ĊĠĠĠĠĠĠĠĠĠĠĠ ĠR . string . drawer _ close ĊĠĠĠĠĠĠĠ Ġ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// closed Ġdrawer Ġdescription ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// called Ġonce Ġthe Ġdrawer Ġhas Ġclosed . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drawer Opened ( drawer View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Drawer Opened ( drawer View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar !!. title Ġ= Ġ" Categories " ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () Ġ// Ġcreates Ġcall Ġto Ġon Prepare Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠĠĠĠĠĠĠĠĠ Ġ// called Ġwhen Ġthe Ġdrawer Ġis Ġnow Ġopen . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġoverride Ġfun Ġon Drawer Closed ( drawer View : ĠView ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsuper . on Drawer Closed ( drawer View ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport ActionBar !!. setTitle ( R . string . app _ name ) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġinvalidate Options Menu () Ġ// Ġcreates Ġcall Ġto Ġon Prepare Options Menu () ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠ Ġ// To Ġdisable Ġthe Ġicon Ġfor Ġthe Ġdrawer , Ġchange Ġthis Ġto Ġfalse ĊĠĠĠĠĠĠĠ Ġ// m Drawer Toggle . set Drawer Indicator Enabled ( true ); ĊĠĠĠĠĠĠĠ Ġm Drawer layout . add Drawer Listener ( m Drawer Toggle ) ĊĊĠĠĠĠĠĠĠ Ġ// this Ġia Ġthe Ġsupport ĠNavigation Ġview . ĊĠĠĠĠĠĠĠ Ġm Navigation View Ġ= ĠfindViewById < View >( R . id . nav view ) Ġas ĠNavigation View ĊĊĠĠĠĠĠĠĠ Ġ// setup Ġa Ġlistener , Ġwhich Ġacts Ġvery Ġsim iliar Ġto Ġhow Ġmenus Ġare Ġhandled . ĊĠĠĠĠĠĠĠ Ġm Navigation View . set Navigation ItemSelected Listener ( Navigation View . On Navigation ItemSelected Listener Ġ{ Ġmenu Item Ġ-> Ġ// we Ġcould Ġjust Ġas Ġeasily Ġcall Ġon Options ItemSelected ( menuItem ) Ġand Ġhow Ġit Ġdeal Ġwith Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠ Ġval Ġid Ġ= Ġmenu Item . itemId ĊĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ( id Ġ== ĠR . id . drawing ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// load Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! menuItem . isChecked ()) Ġ{ Ġ Ġ// only Ġneed Ġto Ġdo Ġthis Ġif Ġfragment Ġis Ġalready Ġloaded . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmenu Item . isChecked Ġ= Ġtrue Ġ// make Ġsure Ġto Ġcheck / highlight Ġthe Ġitem . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . container , ĠMain Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Drawer layout . close Draw ers () Ġ// close Ġthe Ġdrawer , Ġsince Ġthe Ġuser Ġhas Ġselected Ġit . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . drawing 1 ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// load Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġif Ġ(! menuItem . isChecked ()) Ġ{ Ġ Ġ// only Ġneed Ġto Ġdo Ġthis Ġif Ġfragment Ġis Ġalready Ġloaded . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmenu Item . isChecked Ġ= Ġtrue Ġ// make Ġsure Ġthe Ġitem Ġis Ġchecked / highlighted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . container , ĠDraw 1 Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// ĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// now Ġclose Ġthe Ġnav Ġdrawer . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Drawer layout . close Draw ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . and raw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// load Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmenu Item . isChecked Ġ= Ġtrue Ġ// make Ġsure Ġthe Ġitem Ġis Ġchecked / highlighted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction (). replace ( R . id . container , ĠAn Draw Fragment ()) ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// now Ġclose Ġthe Ġnav Ġdrawer . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Drawer layout . close Draw ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} Ġelse Ġif Ġ( id Ġ== ĠR . id . as draw ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// load Ġfragment ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// Ġmenu Item . isChecked Ġ= Ġtrue Ġ// make Ġsure Ġthe Ġitem Ġis Ġchecked / highlighted ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. replace ( R . id . container , ĠAs yc Draw Fragment ()). commit () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ// now Ġclose Ġthe Ġnav Ġdrawer . ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġm Drawer layout . close Draw ers () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġreturn @ On Navigation ItemSelected Listener Ġtrue ĊĠĠĠĠĠĠĠĠĠĠĠ Ġ} ĊĠĠĠĠĠĠĠĠĠĠĠ Ġfalse ĊĠĠĠĠĠĠĠ Ġ}) ĊĊĠĠĠĠĠĠĠ Ġif Ġ( savedInstanceState Ġ== Ġnull ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġsupport FragmentManager . beginTransaction () ĊĠĠĠĠĠĠĠĠĠĠĠĠĠĠĠ Ġ. add ( R . id . container , ĠMain Fragment ()). commit () ĊĠĠĠĠĠĠĠ Ġ} ĊĊĠĠĠ Ġ} ĊĊĊĠĠĠ Ġ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 _ main , Ġ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 ĊĠĠĠĠĠĠĠ Ġreturn Ġif Ġ( id Ġ== ĠR . id . action _ settings ) Ġ{ ĊĠĠĠĠĠĠĠĠĠĠĠ Ġtrue ĊĠĠĠĠĠĠĠ Ġ} Ġelse Ġsuper . on Options ItemSelected ( item ) ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġ/** ĊĠĠĠĠ Ġ* ĠWhen Ġusing Ġthe ĠAction Bar Drawer Toggle , Ġyou Ġmust Ġcall Ġit Ġduring ĊĠĠĠĠ Ġ* Ġon Post Create () Ġand Ġon Configuration Changed () ... ĊĠĠĠĠ Ġ*/ ĊĠĠĠ Ġoverride Ġfun Ġon Post Create ( savedInstanceState : ĠBundle ?) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Post Create ( savedInstanceState ) ĊĠĠĠĠĠĠĠ Ġ// ĠSync Ġthe Ġtoggle Ġstate Ġafter Ġon Restore InstanceState Ġhas Ġoccurred . ĊĠĠĠĠĠĠĠ Ġm Drawer Toggle . sync State () ĊĠĠĠ Ġ} ĊĊĠĠĠ Ġoverride Ġfun Ġon Configuration Changed ( new Config : ĠConfiguration ) Ġ{ ĊĠĠĠĠĠĠĠ Ġsuper . on Configuration Changed ( new Config ) ĊĠĠĠĠĠĠĠ Ġ// ĠPass Ġany Ġconfiguration Ġchange Ġto Ġthe Ġdrawer Ġto g gl s ĊĠĠĠĠĠĠĠ Ġm Drawer Toggle . on Configuration Changed ( new Config ) ĊĠĠĠ Ġ} Ċ Ċ }