android - OnDetach/onAttach fragment recreate fragment activity -



android - OnDetach/onAttach fragment recreate fragment activity -

i want detach/attach fragments, how set, fragment not recreate, after attach.

in fragment have webview; when select , unselect tabs, webview load startpage.

there code:

public class mainactivity extends activity implements onclicklistener, onmenuitemclicklistener { actionbar bar; view v; public static textview tilt; layoutinflater inflater; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.main); setrequestedorientation(activityinfo.screen_orientation_landscape); onaddtab(); view v=getlayoutinflater().inflate(r.layout.action_bar, null); imagebutton im = (imagebutton)v.findviewbyid(r.id.tab_toggle); im.setonclicklistener(this); getactionbar().setbackgrounddrawable(getresources().getdrawable(r.drawable.shape_layout)); getactionbar().setdisplayoptions(actionbar.display_show_custom); getactionbar().setcustomview(v); ontoggletabs(); } @override public void onclick(view v) { // todo auto-generated method stub switch (v.getid()){ case r.id.tab_toggle: onaddtab(); break; } } public void onaddtab() { final actionbar bar = getactionbar(); view v=getlayoutinflater().inflate(r.layout.layout_tab, null); tilt = (textview)v.findviewbyid(r.id.tit_le); actionbar.layoutparams lp = new actionbar.layoutparams(actionbar.layoutparams.wrap_content, actionbar.layoutparams.wrap_content); lp.gravity = gravity.center; v.setlayoutparams(lp); closetab = (imagebutton)v.findviewbyid(r.id.close); closetab.setonclicklistener(new onclicklistener() { @override public void onclick(view v) { // todo auto-generated method stub onremovetab(); } }); bar.addtab(bar.newtab() .setcustomview(v) .settablistener(new tablistener<web>(this, "tag a", web.class))); } public void onremovetab() { final actionbar bar = getactionbar(); tab tab = bar.getselectedtab(); bar.removetab(tab); } public void ontoggletabs() { final actionbar bar = getactionbar(); bar.setnavigationmode(actionbar.navigation_mode_tabs); } public void onremovealltabs(view v) { getactionbar().removealltabs(); } public static class tablistener<t extends fragment> implements actionbar.tablistener{ private final activity myactivity; private final string mytag; private final class<t> myclass; public tablistener(activity activity, string tag, class<t> cls) { myactivity = activity; mytag = tag; myclass = cls; } @override public void ontabselected(tab tab, fragmenttransaction ft) { fragment myfragment = myactivity.getfragmentmanager().findfragmentbytag(mytag); // check if fragment initialized if (myfragment == null) { // if not, instantiate , add together activity myfragment = fragment.instantiate(myactivity, myclass.getname()); ft.add(r.id.fragment0, myfragment, mytag); } else { // if exists, attach in order show ft.attach(myfragment); } } @override public void ontabunselected(tab tab, fragmenttransaction ft) { fragment myfragment = myactivity.getfragmentmanager().findfragmentbytag(mytag); if (myfragment != null) { // detach fragment, because 1 beingness attached ft.detach(myfragment); } } @override public void ontabreselected(tab tab, fragmenttransaction ft) { // todo auto-generated method stub } }

there fragment:

public class web extends fragment implements onlongclicklistener, onclicklistener{ @override public void oncreate(bundle savedinstancestate) { // todo auto-generated method stub super.oncreate(savedinstancestate); } @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { // todo auto-generated method stub c=this.getactivity(); v = inflater.inflate(r.layout.activity_main, container, false); homecoming v; } @suppresswarnings("deprecation") @override public void onactivitycreated(bundle savedinstancestate) { // todo auto-generated method stub super.onactivitycreated(savedinstancestate); setretaininstance(true); wv = (webview)v.findviewbyid(r.id.wv); wv.setwebchromeclient(new webchromeclient(){ @override public void onprogresschanged(webview view, int progress) { // todo auto-generated method stub super.onprogresschanged(view, progress); if(progress < 100 && pr.getvisibility() == progressbar.gone){ pr.setvisibility(progressbar.visible); } pr.setprogress(progress); if(progress == 100) { pr.setvisibility(progressbar.gone); } } }); wv.setwebviewclient(new mywebviewclient()); wv.loadurl("http://www.google.com"); wv.setonlongclicklistener(this);}

try setretaininstance(boolean)

also check posts: android fragments setretaininstance(true) not works (android back upwards library) fragment setretaininstance not works (android back upwards lib) understanding fragment's setretaininstance(boolean)

android fragment detach

Comments

Popular posts from this blog

web services - java.lang.NoClassDefFoundError: Could not initialize class net.sf.cglib.proxy.Enhancer -

Accessing MATLAB's unicode strings from C -

javascript - mongodb won't find my schema method in nested container -