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
Post a Comment