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:

enter image description here

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

Popular posts from this blog

c++ - CryptStringToBinary API behavior -

c++ - Correct method for redrawing a layered window -

java.util.scanner - How to read and add only numbers to array from a text file -