java - Previously detached fragment stays visible behind the current, after tab changed (using support library) -


here tablistener:

    public class tablistener<t extends fragment> implements android.support.v7.app.actionbar.tablistener {      private fragment mfragment;     private final activity mactivity;     private final string mtag;     private final class<t> mclass;      public tablistener(activity activity, string tag, class<t> cl) {         mactivity = activity;         mtag = tag;         mclass = cl;     }      @override     public void ontabreselected(tab arg0, fragmenttransaction arg1) {         // todo auto-generated method stub               }      @override     public void ontabselected(tab tab, fragmenttransaction ft) {          mfragment = ((fragmentactivity) mactivity).getsupportfragmentmanager().findfragmentbytag(mtag);   // add          if (mfragment == null){              mfragment = android.support.v4.app.fragment.instantiate(mactivity, mclass.getname());              ft.add(android.r.id.content,mfragment,mtag);         } else {             ft.attach(mfragment);         }                  }      @override     public void ontabunselected(tab tab, fragmenttransaction ft) {         mfragment = ((fragmentactivity) mactivity).getsupportfragmentmanager().findfragmentbytag(mtag);   // add         if (mfragment != null) {             //toast.maketext(mactivity, "detached", toast.length_short).show();             ft.detach(mfragment);         }     }  } 

and part of activity:

public class roadmapactivity extends actionbaractivity {  listview generalroadmaplist; listview mainroadmaplist; android.support.v7.app.actionbar actionbar;  @override protected void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     setcontentview(r.layout.activity_roadmap);      actionbar = getsupportactionbar();             actionbar.setdisplayshowtitleenabled(false);     actionbar.setdisplayuselogoenabled(true);            actionbar.setnavigationmode(actionbar.navigation_mode_tabs);      tab generaltab = actionbar.newtab()             .settext("general")             .settablistener(new tablistener<generallistfragment>(this, "general", generallistfragment.class));     actionbar.addtab(generaltab);      tab mytab = actionbar.newtab()                         .settext("my")                         .settablistener(new tablistener<mylistfragment>(this, "my", mylistfragment.class));     actionbar.addtab(mytab); } 

i tried change viewgroup android.r.id.content custom view group activity's layout, next thing happens:

i have 2 tabs, , b. after starting activity active tab , content fragment a. if switching b, tab b gets active, content still fragment a. change tab a, , content fragment b. change tab b, content fragment a... without showing other fragment behind, whit changed content.

i've tried everithing found on google , here, without sucess. have idea?

you instantiating fragments wrong. have @ revised method.

@override public void ontabselected(tab tab, fragmenttransaction ft) {     fragment mfragment;    switch(tab.getposition(){       case 0:        /* create fragment in here based on tab, mfragment = new examplefrag */         break;      case 1:        /* create fragment in here based on tab, mfragment = new examplefrag */         break;    }     ft.replace(android.r.id.content, mfragment); }  @override public void ontabunselected(tab tab, fragmenttransaction ft) {    // dont need anything. } 

much more simple.

worth noting shouldn't use android.r.id.content actionbaractivity prior android 3.0 support action bar gets added android.r.id.content , replacing fragment it, remove actionbar. (nasty know.)


Comments

Popular posts from this blog

c# - How Configure Devart dotConnect for SQLite Code First? -

c++ - Clear the memory after returning a vector in a function -

erlang - Saving a digraph to mnesia is hindered because of its side-effects -