android - How to navigate to previous fragment using back-button within NavigationDrawer? -


i know similar questions have been asked before, can't seem find i’m looking for. problem button exiting app. i’m trying make navigate previous fragment. if open fragment1 - > fragment2 , press button take fragment1.

my current code looks this.

public class mainactivity extends fragmentactivity { private drawerlayout mdrawerlayout; private listview mdrawerlist; private actionbardrawertoggle mdrawertoggle;  private charsequence mdrawertitle; private charsequence mtitle; private string[] mpagetitles;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_main);      mtitle = mdrawertitle = gettitle();     mpagetitles = getresources().getstringarray(r.array.menu_array);     mdrawerlayout = (drawerlayout) findviewbyid(r.id.drawer_layout);     mdrawerlist = (listview) findviewbyid(r.id.left_drawer);      // set custom shadow overlays main content when drawer     // opens     mdrawerlayout.setdrawershadow(r.drawable.drawer_shadow,             gravitycompat.start);          // set drawer's list view items , click listener     mdrawerlist.setadapter(new arrayadapter<string>(this,             r.layout.drawer_list_item, mpagetitles));     mdrawerlist.setonitemclicklistener(new draweritemclicklistener());      // enable actionbar app icon behave action toggle nav drawer     getactionbar().setdisplayhomeasupenabled(true);     getactionbar().sethomebuttonenabled(true);      // actionbardrawertoggle ties the proper interactions     // between sliding drawer , action bar app icon     mdrawertoggle = new actionbardrawertoggle(this, /* host activity */     mdrawerlayout, /* drawerlayout object */     r.drawable.ic_drawer, /* nav drawer image replace 'up' caret */     r.string.drawer_open, /* "open drawer" description accessibility */     r.string.drawer_close /* "close drawer" description accessibility */      )      {         public void ondrawerclosed(view view) {             getactionbar().settitle(mtitle);             invalidateoptionsmenu(); // creates call                                         // onprepareoptionsmenu()         }          public void ondraweropened(view drawerview) {             getactionbar().settitle(mdrawertitle);             invalidateoptionsmenu(); // creates call                                         // onprepareoptionsmenu()         }      };     mdrawerlayout.setdrawerlistener(mdrawertoggle);      // sets firstpage if no state found     if (savedinstancestate == null) {         selectitem(0);     } }  @override public boolean oncreateoptionsmenu(menu menu) {     menuinflater inflater = getmenuinflater();     inflater.inflate(r.menu.main, menu);      return super.oncreateoptionsmenu(menu); }   /* called whenever call invalidateoptionsmenu() */ @override public boolean onprepareoptionsmenu(menu menu) {     // if nav drawer open, hide action items related content     // view     return super.onprepareoptionsmenu(menu); }  // toogles drawer menu @override public boolean onoptionsitemselected(menuitem item) {     return mdrawertoggle.onoptionsitemselected(item);  }  /* click listner listview in navigation drawer */ private class draweritemclicklistener implements         listview.onitemclicklistener {     @override     public void onitemclick(adapterview<?> parent, view view, int position,             long id) {         selectitem(position);     } }  private void selectitem(int position) {     // update main content replacing fragments      fragmentmanager fragmentmanager = getfragmentmanager();      fragmenttransaction fragmenttransaction = fragmentmanager.begintransaction();      switch (position) {     case 0:         kontaktinfofragment kontakt = new kontaktinfofragment();         fragmenttransaction.replace(r.id.content_frame, kontakt);         fragmenttransaction.addtobackstack("replace");         fragmenttransaction.commit();          break;     case 1:         omossfragment omoss = new omossfragment();         fragmenttransaction.replace(r.id.content_frame, omoss);         fragmenttransaction.addtobackstack("replace");         fragmenttransaction.commit();         break;     case 2:         mainscreenactivity mainscreen = new mainscreenactivity();         fragmenttransaction.replace(r.id.content_frame, mainscreen);         fragmenttransaction.addtobackstack("replace");         fragmenttransaction.commit();         break;     case 3:         loginfragment login = new loginfragment();         fragmenttransaction.replace(r.id.content_frame, login);         fragmenttransaction.addtobackstack("replace");         fragmenttransaction.commit();         break;     case 4:         contactformfragment form = new contactformfragment();         fragmenttransaction.replace(r.id.content_frame, form);         fragmenttransaction.addtobackstack("replace");         fragmenttransaction.commit();         break;        }      // update selected item , title, close drawer     mdrawerlist.setitemchecked(position, true);     settitle(mpagetitles[position]);     mdrawerlayout.closedrawer(mdrawerlist); }  @override public void settitle(charsequence title) {     mtitle = title;     getactionbar().settitle(mtitle); } 

}

when press button inside fragment onbackpressed() method of activity called if have declared that..so handling button fragments within navigation drawer can 1 in way..

mainactvity

     public static boolean ismainactivityshown ;      public static boolean isfragment1shown=false ;      public static boolean isfragment2shown=false ;     @override     protected void oncreate(bundle savedinstancestate) {         super.oncreate(savedinstancestate);         ismainactivityshown=true  //inside oncreate method put ismainactivityshown true .  .  . }                  fragment currentfragment = new fragment1();                   ismainactivityshown=false;   //when moving fragment1                  isfragment1shown=true;                frgmanager = getfragmentmanager();                frgmanager.begintransaction().replace(r.id.content_frame, currentfragment)                                         .commit();      @override         public void onbackpressed() {              if(ismainactivityshown)             {                 finish();             }             else if(isfragment1shown)             {                //write code handle button when in fragment1             }            else if(isfragment2shown)             {  //when in fragment 2 pressing button move fragment1                 fragment currentfragment = new fragment1();                 isfragment2shown=false;     isfragment1shown=true;                  fragmentmanager frgmanager;                 frgmanager = getfragmentmanager();                 frgmanager.begintransaction().replace(r.id.content_frame, currentfragment)                         .commit();             }              } 

fragment1

fragment currentfragment = new fragment2();              mainactivity.isfragment1shown=false; mainactivity.isfragment2shown=true;                             frgmanager = getfragmentmanager();                             frgmanager.begintransaction().replace(r.id.content_frame, currentfragment)                                     .commit(); 

Comments

Popular posts from this blog

apache - Remove .php and add trailing slash in url using htaccess not loading css -

javascript - jQuery show full size image on click -