android - Button on ToolBar won't open the Navigation Drawer -


i have created base activity contains navigation drawer.

the drawer open on slide, never through navigation button on toolbar. i've been stuck on quite while, , had working prior creating base class , don't think i've changed logically.

i know question has been asked before, i've gone through other similar posts , have not been able solve it.

thanks in advance!

public class draweractivity extends appcompatactivity     implements navigationview.onnavigationitemselectedlistener {   protected drawerlayout          drawerlayout; private   actionbardrawertoggle toggle; private   toolbar               toolbar; private   navigationview        navigationview; private   boolean               enabletoolbar;   @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     enabletoolbar  =  true;  }   @override public void setcontentview(int layoutresid){     super.setcontentview(r.layout.activity_drawer);     settoolbar();     setdrawerlayout();     setnavigationdrawer();     settoolbaronclicklistener();     if(!usetoolbar())         toolbar.setvisibility(view.gone);     inflatetocontentframe(layoutresid); }   public void setusestoolbar(boolean _enable){     enabletoolbar = _enable; }   private boolean usetoolbar(){     return enabletoolbar; }   private void settoolbar(){     toolbar = (toolbar) findviewbyid(r.id.toolbar);     setsupportactionbar(toolbar); }   private void setdrawerlayout(){     drawerlayout = (drawerlayout)getlayoutinflater().inflate(r.layout.activity_drawer, null);     toggle = new actionbardrawertoggle(this, drawerlayout, toolbar,             r.string.navigation_drawer_open, r.string.navigation_drawer_close){          @override         public void ondraweropened(view drawerview) {             super.ondraweropened(drawerview);             draweractivity.this.invalidateoptionsmenu();         }          @override         public void ondrawerclosed(view drawerview) {             super.ondrawerclosed(drawerview);             draweractivity.this.invalidateoptionsmenu();         }          @override         public void ondrawerslide(view drawerview, float slideoffset) {             super.ondrawerslide(drawerview, slideoffset);             draweractivity.this.toolbar.setalpha(1 - slideoffset / 2);         }     };      toggle.setdrawerindicatorenabled(true);     drawerlayout.adddrawerlistener(toggle);     drawerlayout.post(new runnable() {         @override         public void run() {             toggle.syncstate();         }     });  }  private void setnavigationdrawer(){     navigationview = (navigationview) findviewbyid(r.id.nav_view);     navigationview.setnavigationitemselectedlistener(this); }   private void settoolbaronclicklistener(){     toolbar.setnavigationonclicklistener(new view.onclicklistener() {         @override         public void onclick(view view) {             draweractivity.this.drawerlayout.opendrawer(gravitycompat.start);         }     }); }   private void inflatetocontentframe(int layoutresid){     framelayout content = (framelayout) findviewbyid(r.id.content_frame);     layoutinflater inflater = (layoutinflater) this.getsystemservice(context.layout_inflater_service);     view contentview = inflater.inflate(layoutresid, content, true); }   @override public void onbackpressed() {     if (drawerlayout.isdraweropen(gravitycompat.start)) {         drawerlayout.closedrawer(gravitycompat.start);     } else {         super.onbackpressed();     } }  @override public boolean oncreateoptionsmenu(menu menu) {     // inflate menu; adds items action bar if present.     getmenuinflater().inflate(r.menu.drawer, menu);     return true; }   @override public boolean onoptionsitemselected(menuitem item) {     // handle action bar item clicks here. action bar     // automatically handle clicks on home/up button, long     // specify parent activity in androidmanifest.xml.     int id = item.getitemid();      //noinspection simplifiableifstatement     if (id == r.id.action_settings) {         return true;     }      return super.onoptionsitemselected(item); }    @suppresswarnings("statementwithemptybody") @override public boolean onnavigationitemselected(menuitem item) {      int id = item.getitemid();     intent _intent;     if (id == r.id.nav_classes) {         _intent = new intent(this, appointmentsactivity.class);     } else if (id == r.id.nav_appointments) {         _intent = new intent(this, appointmentsactivity.class);     } else if (id == r.id.nav_clients) {         _intent = new intent(this, appointmentsactivity.class);     } else if (id == r.id.nav_payments) {         _intent = new intent(this, appointmentsactivity.class);     } else if(id == r.id.nav_settings){         _intent = new intent(this, appointmentsactivity.class);     } else if (id == r.id.nav_share) {         _intent = new intent(this, appointmentsactivity.class);     } else if (id == r.id.nav_send) {         _intent = new intent(this, appointmentsactivity.class);     }else{         _intent = new intent(this, appointmentsactivity.class);     }      drawerlayout.closedrawer(gravitycompat.start);     startactivity(_intent);     return true; }    } 

xml:

<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:app="http://schemas.android.com/apk/res-auto" xmlns:tools="http://schemas.android.com/tools" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent" android:fitssystemwindows="true" tools:opendrawer="start">  <framelayout     android:id="@+id/content_frame"     android:layout_width="match_parent"     android:layout_height="match_parent"> </framelayout>   <include     layout="@layout/app_bar_drawer"     android:layout_width="match_parent"     android:layout_height="match_parent" />    <android.support.design.widget.navigationview     android:id="@+id/nav_view"     android:layout_width="wrap_content"     android:layout_height="match_parent"     android:layout_gravity="start"     android:fitssystemwindows="true"     app:headerlayout="@layout/nav_header_drawer"     app:menu="@menu/activity_drawer_drawer"     />     </android.support.v4.widget.drawerlayout> 

the drawerlayout instance you're setting toggle not instance that's on-screen. in setdrawerlayout() method, you're inflating new layout that's never used.

instead of inflating there, use findviewbyid() drawerlayout instance that's created , added activity in super.setcontentview() call.

drawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout); 

also, can omit toolbar.setnavigationonclicklistener() call, actionbardrawertoggle set listener itself, , handle opening , closing drawer internally.


Comments

Popular posts from this blog

php - How to display all orders for a single product showing the most recent first? Woocommerce -

asp.net - How to correctly use QUERY_STRING in ISAPI rewrite? -

angularjs - How restrict admin panel using in backend laravel and admin panel on angular? -