i have code here setting navigation drawer. works fine except hamburger icon should there click , open drawer not appearing.mainactivity:
import android.support.v4.widget.drawerlayout; import android.support.v7.app.actionbar; import android.support.v7.app.actionbardrawertoggle; import android.support.v7.app.appcompatactivity; import android.os.bundle; import com.defcomm.invento.navigationdraweractivity; import android.support.v7.widget.toolbar; import android.view.menu; import android.view.menuitem; public class invento extends appcompatactivity { private toolbar toolbar; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_invento); toolbar= (toolbar) findviewbyid(r.id.app_bar); setsupportactionbar(toolbar); getsupportactionbar().setdisplayshowhomeenabled(true); navigationdraweractivity drawerfragment= (navigationdraweractivity) getsupportfragmentmanager(). findfragmentbyid(r.id.navigation_drawer); drawerfragment.setup(r.id.navigation_drawer, (drawerlayout) findviewbyid(r.id.drawerlayout), toolbar); } @override public boolean oncreateoptionsmenu(menu menu) { // inflate menu; adds items action bar if present. getmenuinflater().inflate(r.menu.menu_invento, 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); }
}
navigation avtivity:
import android.content.context; import android.content.sharedpreferences; import android.os.bundle; import android.support.annotation.nullable; import android.support.v4.app.fragment; import android.support.v4.widget.drawerlayout; import android.support.v7.app.actionbardrawertoggle; import android.support.v7.widget.toolbar; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; /** * simple {@link fragment} subclass. */ public class navigationdraweractivity extends fragment { private actionbardrawertoggle mdrawertoggle; private drawerlayout mdrawerlayout; private boolean muserlearnedstate; view containerid; public static final string file_pref_name="testpef"; public static final string key_user_value="user_learned_drawer"; private boolean mfromsavedinstancestate; public navigationdraweractivity() { // required empty public constructor } @override public void oncreate(@nullable bundle savedinstancestate) { super.oncreate(savedinstancestate); muserlearnedstate=boolean.valueof(readpreference(getactivity(), key_user_value, "false")); if (savedinstancestate!=null){ mfromsavedinstancestate=true; } } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // inflate layout fragment return inflater.inflate(r.layout.fragment_navigation_drawer, container, false); } public void setup(int fragmentid,drawerlayout drawerlayout,toolbar toolbar) { mdrawerlayout=drawerlayout; containerid=getactivity().findviewbyid(fragmentid); mdrawertoggle= new actionbardrawertoggle(getactivity(),drawerlayout, r.string.drawer_open,r.string.drawer_close){ @override public void ondraweropened(view drawerview) { super.ondraweropened(drawerview); if(!muserlearnedstate){ muserlearnedstate=true; savetopreference(getactivity(),key_user_value,muserlearnedstate+""); } getactivity().invalidateoptionsmenu(); } @override public void ondrawerclosed(view drawerview) { super.ondrawerclosed(drawerview); mdrawertoggle.setdrawerindicatorenabled(true); getactivity().invalidateoptionsmenu(); } }; if(!muserlearnedstate&&!mfromsavedinstancestate){ mdrawerlayout.opendrawer(containerid); } mdrawerlayout.setdrawerlistener(mdrawertoggle); mdrawerlayout.post(new runnable() { @override public void run() { mdrawertoggle.syncstate(); mdrawertoggle.setdrawerindicatorenabled(true); } }); } public static void savetopreference (context context,string preferencename,string preferencevalue){ sharedpreferences shared= context.getsharedpreferences(file_pref_name, context.mode_private); sharedpreferences.editor editor=shared.edit(); editor.putstring(preferencename,preferencevalue); editor.apply(); } public static string readpreference(context context,string preferencename,string defaultvalue){ sharedpreferences share= context.getsharedpreferences(file_pref_name,context.mode_private); return share.getstring(preferencename,defaultvalue); }
}
mainactivity.xml
<android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:id="@+id/drawerlayout" android:layout_height="match_parent" xmlns:app="http://schemas.android.com/apk/res-auto"> <relativelayout android:layout_width="match_parent" android:layout_height="match_parent" > <include layout="@layout/app_bar" android:id="@+id/app_bar"/> <textview android:layout_below="@+id/app_bar" android:text="@string/hello_world" android:layout_width="wrap_content" android:layout_height="wrap_content" /> </relativelayout> <fragment android:id="@+id/navigation_drawer" android:layout_width="@dimen/drawer_width" android:layout_height="match_parent" android:layout_gravity="start" app:layout="@layout/fragment_navigation_drawer" android:name="com.defcomm.invento.navigationdraweractivity" tools:layout="@layout/fragment_navigation_drawer" />
i don't know fault in this.i 'am using custom toolbar here cross checked too. nothing working.i don't know whether fault here.please help.
final actionbar actionbar = getsupportactionbar(); if(actionbar!=null) { actionbar.sethomeasupindicator(android.r.drawable.ic_drawer); actionbar.setdisplayhomeasupenabled(true); }
use above code in activity put icon of navigation drawer. can change on different activity.
use following code --
@override public void onbackpressed(){ if(drawer.isdraweropen()){ //replace actual function returns drawer.close(); // replace actual function closes drawer } else{ super.onbackpressed(); } }
Comments
Post a Comment