android - Toggle button not working for navigation drawer -
i implementing navigation drawer android application. got drawer work dragging side, home/toggle button on action bar doesn't change icon want , doesn't respond clicks, thou ondrawerclosed , ondraweropened methods defined in called. code follows:
<?xml version="1.0" encoding="utf-8"?> <android.support.v4.widget.drawerlayout xmlns:android="http://schemas.android.com/apk/res/android" android:id="@+id/drawer_layout" android:layout_width="match_parent" android:layout_height="match_parent"> <fragment android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/loadingfragment" android:name="com.whostr.clients.android.loadingfragment" /> <fragment android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/eventfragment" android:name="com.whostr.clients.android.eventdisplayfragment"/> <fragment android:layout_width="match_parent" android:layout_height="match_parent" android:id="@+id/emptyfragment" android:name="com.whostr.clients.android.emptyview"/> <!-- listview display slider menu --> <listview android:id="@+id/left_drawer" android:layout_width = "240dp" android:layout_height = "match_parent" android:layout_gravity = "start" android:choicemode = "singlechoice" android:dividerheight = "1dp" android:divider = "@android:color/transparent" android:background="#111" />
and in activity have following code:
@override public void oncreate(bundle saveddatainstace) { super.oncreate(saveddatainstace); setcontentview(r.layout.eventdisplay); fm = getsupportfragmentmanager(); //get fragments id fragments[event_view]= fm.findfragmentbyid(r.id.eventfragment); fragments[loading] = fm.findfragmentbyid(r.id.loadingfragment); fragments[empty_view] = fm.findfragmentbyid(r.id.emptyfragment); menulist = getresources().getstringarray(r.array.menuarray); mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout); mdrawerlist = (listview) findviewbyid(r.id.left_drawer); mdrawertoggle = new actionbardrawertoggle(this, mdrawerlayout, r.drawable.ic_drawer, r.string.drawwer_open, r.string.drawer_closed) { /* * called when drawer has settled in closed state */ public void ondrawerclosed(view view) { log.d("drawertoggle", "drawer closed"); super.ondrawerclosed(view); getactionbar().settitle(r.string.app_name); invalidateoptionsmenu(); //creates call onprepareoptionsmenu() } /* * called when drawer has settled in open state */ public void ondraweropened(view drawerview) { log.d("drawertoggle", "drawer opened"); super.ondraweropened(drawerview); getactionbar().settitle("navigationdrawer"); invalidateoptionsmenu(); } }; mdrawerlayout.setdrawerlistener(mdrawertoggle); //set adapter list view mdrawerlist.setadapter(new arrayadapter<string>(this, r.layout.drawer_list_item, menulist)); mdrawerlist.setonitemclicklistener(new onitemclicklistener() { @override public void onitemclick(adapterview<?> arg0, view view, int position, long id) { log.d("navigationdrawer", "clicked on item"); } }); fragmenttransaction transaction = fm.begintransaction(); //hide event view transaction.hide(fragments[event_view]); transaction.hide(fragments[empty_view]); transaction.commit(); asynctask<string, void, eventresponsecollection> task = new geteventsnearbyasynctask().execute(); try { if(task != null) events = task.get().getitems(); } catch (interruptedexception | executionexception e) { log.d("viewevent", "error when retrieving task details " + e.getmessage()); } if(events == null) { //show create own event fragment changefragment(empty_view); } else { log.d("viewevent", "i have " + events.size()); //show proper fragment first event displayed currentevent = events.get(eventindex); ((eventdisplayfragment) fragments[event_view]).updatefragment(currentevent); changefragment(event_view); } } @override public boolean onoptionsitemselected(menuitem item) { log.d("onoptionsitemselected", "in on item select"); //pass event actionbardrawertoggle, if returns //true, has handled app icon touch event if(mdrawertoggle.onoptionsitemselected(item)) { log.d("onoptionsitemselected", "clicked on action bar item"); return true; } //handle other action bar items... return super.onoptionsitemselected(item); }
does have suggestion on can do? i've tried solutions found online make work, apparently i'm out of luck , nothing seems working :(
you have add in activity
@override public boolean onoptionsitemselected(android.view.menuitem item) { return drawertoggle.onoptionsitemselected(item); }
Comments
Post a Comment