when pressing button getting fragment empty. not getting previous fragment poped back. tried many solutions didn't work. solution ? have no idea how solve this.
private void displayview(int position) { fragment fragment = null; switch (position) { case 0: fragment = mhomefragmentinstance; break; case 1: fragment = morderfragmentinstance; break; case 2: fragment = mordersheetfragmentinstance; break; case 3: fragment = mmyorderwidgetfragmentinstance; break; case 4: intent intent=new intent(this,loginactivity.class); startactivity(intent); clearvalues(); finish(); return; default: fragment = mhomefragmentinstance; break; } if (fragment != null) { replacefragment(fragment, position); } } /** * when using actionbardrawertoggle, must call during * onpostcreate() , onconfigurationchanged()... */ @override protected void onpostcreate(bundle savedinstancestate) { super.onpostcreate(savedinstancestate); mdrawertoggle.syncstate(); } @override public void onconfigurationchanged(configuration newconfig) { super.onconfigurationchanged(newconfig); mdrawertoggle.onconfigurationchanged(newconfig); } public void replacefragment(fragment fragment){ if (fragment != null) { fragment currentfragment = this.getsupportfragmentmanager().findfragmentbyid(r.id.frame_container); if(null != currentfragment ){ if(currentfragment.equals(fragment)){ return; }else{ getsupportfragmentmanager().begintransaction().remove(currentfragment).commit(); } } fragmentmanager fm = getsupportfragmentmanager(); fragmenttransaction ft = fm.begintransaction(); ft.replace(r.id.frame_container, fragment); ft.addtobackstack(null); ft.commit(); } else { // error in creating fragment log.e("mainactivity", "error in creating fragment"); } } public void replacefragment(fragment fragment, int position){ adapter.selectitem(position); log.i("tag", "replacefragment:"+fragment.getclass().getname()+":"+position); replacefragment(fragment); log.i("tag", "add"+fragment.getclass().getname()+"backstackfragment"); if(fragment.equals(mhomefragmentinstance)){ log.i("tag", "clear backstackfragment"); backstackfragment.clear(); backstackfragment.add(mhomefragmentinstance); } mdrawerlist.setitemchecked(position, true); mdrawerlist.setselection(position); settitle(navmenutitles[position]); mdrawerlayout.closedrawer(drawercontainer); } @override public void settitle(charsequence title) { mtitle = title; //getactionbar().settitle(html.fromhtml("<font color='#983a1b'>" + title + "</font>")); view view = getactionbar().getcustomview(); //((textview)view.findviewbyid(r.id.title)).settext(html.fromhtml("<font color='#983a1b'>" + title + "</font>")); ((textview)view.findviewbyid(r.id.title)).settext(html.fromhtml("<font color='"+ applicationinfo.getplfcolor(this)+"'>" + title + "</font>")); } @override public void onbackpressed() { fragmentmanager fm = getsupportfragmentmanager(); if(fm.getbackstackentrycount() > 1) { fm.popbackstack(); }else { //super.onbackpressed(); finish(); } } }
just add addtobackstack while transitioning between fragments below:
fragmentmanager.begintransaction().replace(r.id.content_frame,fragment).addtobackstack("tag").commit(); if write addtobackstack(null) , handle if give tag , should handle manually.
Comments
Post a Comment