android - ActionBarSherlock Side Menu Navigation Drawer -
im trying use drawer toggle in action bar sherlock. main activity:
import uk.co.senab.actionbarpulltorefresh.extras.actionbarsherlock.pulltorefreshattacher; import android.content.res.configuration; import android.os.bundle; import android.support.v4.app.actionbardrawertoggle; import android.support.v4.app.fragment; import android.support.v4.app.fragmentmanager; import android.support.v4.widget.drawerlayout; import android.view.view; import android.widget.adapterview; import android.widget.adapterview.onitemclicklistener; import android.widget.arrayadapter; import android.widget.listview; import com.actionbarsherlock.app.sherlockfragmentactivity; import com.actionbarsherlock.view.menuitem; import com.mejorandroid.ejemplo3_clase3.fragments.mainfragment; import com.mejorandroid.ejemplo3_clase3.fragments.termsfragment; public class mainactivity extends sherlockfragmentactivity implements onitemclicklistener{ private listview drawer_list; private drawerlayout drawer_layout; private actionbardrawertoggle drawer_toggle; private pulltorefreshattacher pulltorefreshattacher; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); pulltorefreshattacher = pulltorefreshattacher.get(this); drawer_list = (listview) findviewbyid(r.id.left_drawer); drawer_layout = (drawerlayout) findviewbyid(r.id.drawer_layout); arrayadapter<string> drawer_adapter = new arrayadapter<string>(this, r.layout.drawer_list_item, getresources().getstringarray( r.array.array_drawer_options)); drawer_list.setadapter(drawer_adapter); drawer_list.setonitemclicklistener(this); selectitem(0); drawer_toggle = new actionbardrawertoggle(this, drawer_layout, r.drawable.ic_drawer, r.string.drawer_open, r.string.drawer_close){ @override public void ondrawerclosed(view drawerview) { supportinvalidateoptionsmenu(); } @override public void ondraweropened(view drawerview) { supportinvalidateoptionsmenu(); } }; drawer_layout.setdrawerlistener(drawer_toggle); getsherlock().getactionbar().setdisplayhomeasupenabled(true); getsherlock().getactionbar().sethomebuttonenabled(true); } @override protected void onpostcreate(bundle savedinstancestate) { super.onpostcreate(savedinstancestate); drawer_toggle.syncstate(); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); drawer_toggle.onconfigurationchanged(newconfig); } @override public boolean onoptionsitemselected(menuitem item) { if(item.getitemid() == android.r.id.home || drawer_toggle.onoptionsitemselected(item)){ return true; } return super.onoptionsitemselected(item); } @override public boolean oncreateoptionsmenu(com.actionbarsherlock.view.menu menu) { // inflate menu; adds items action bar if present. getsupportmenuinflater().inflate(r.menu.main, menu); return true; } public pulltorefreshattacher getattacher() { return pulltorefreshattacher; } public void selectitem(int position){ fragment f; if(position==0){ f = new mainfragment(); }else{ f = new termsfragment(); } fragmentmanager fm = getsupportfragmentmanager(); fm.begintransaction() .replace(r.id.main_content, f) .commit(); drawer_list.setitemchecked(position, true); settitle(drawer_list.getitematposition(position).tostring()); drawer_layout.closedrawer(drawer_list); } @override public void onitemclick(adapterview<?> arg0, view arg1, int position, long arg3) { selectitem(position); } } in method onoptionsitemselected:
@override public boolean onoptionsitemselected(menuitem item) { if(item.getitemid() == android.r.id.home || drawer_toggle.onoptionsitemselected(item)){ return true; } return super.onoptionsitemselected(item); } i get:

how can fix this??
this main.xml:
<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"> <framelayout android:id="@+id/main_content" android:layout_width="match_parent" android:layout_height="match_parent"/> <listview android:id="@+id/left_drawer" android:layout_width="240dp" android:layout_height="match_parent" android:layout_gravity="start" android:choicemode="singlechoice" android:divider="@android:color/transparent" android:dividerheight="0dp" android:background="#111"/> </android.support.v4.widget.drawerlayout>
i had same problem , works me:
@override public boolean onoptionsitemselected(menuitem item) { if (item.getitemid() == android.r.id.home) { if (drawer_layout.isdraweropen(drawer_list)) { drawer_layout.closedrawer(drawer_list); } else { drawer_layout.opendrawer(drawer_list); } } return super.onoptionsitemselected(item); } i don't know if problem fixed in newest release of sherlock library / support library, workaround job.
Comments
Post a Comment