java - Android Scrollable Tabs + Swipe state when swiping -
i'm trying make application multiple tabs. each tab i'm using different fragments. , when leaf through tabs information in them changing.
how can save state of each tab when swiping?
code example:
mainactivity.java:
package com.tabs.example; import java.util.locale; import android.graphics.color; import android.os.bundle; import android.support.v4.app.fragment; import android.support.v4.app.fragmentactivity; import android.support.v4.app.fragmentmanager; import android.support.v4.app.fragmentpageradapter; import android.support.v4.view.pagertabstrip; import android.support.v4.view.viewpager; public class mainactivity extends fragmentactivity { sectionspageradapter msectionspageradapter; viewpager mviewpager; @override protected void oncreate(bundle savedinstancestate) { super.oncreate(savedinstancestate); setcontentview(r.layout.activity_main); msectionspageradapter = new sectionspageradapter(getsupportfragmentmanager()); mviewpager = (viewpager) findviewbyid(r.id.pager); mviewpager.setadapter(msectionspageradapter); pagertabstrip pagertabstrip = (pagertabstrip) findviewbyid(r.id.pager_tab_strip); pagertabstrip.setbackgroundcolor(color.black); pagertabstrip.settabindicatorcolor(color.cyan); pagertabstrip.settextcolor(color.white); } public class sectionspageradapter extends fragmentpageradapter { public sectionspageradapter(fragmentmanager fm) { super(fm); } @override public fragment getitem(int position) { fragment fragment; switch (position) { case 0: fragment = new fragment1(); break; case 1: fragment = new fragment2(); break; case 2: fragment = new fragment3(); break; default: fragment = null; break; } return fragment; } @override public int getcount() { return 3; } @override public charsequence getpagetitle(int position) { locale l = locale.getdefault(); switch (position) { case 0: return getstring(r.string.title_section1).touppercase(l); case 1: return getstring(r.string.title_section2).touppercase(l); case 2: return getstring(r.string.title_section3).touppercase(l); } return null; } } } fragment1.java:
package com.tabs.example; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.textview; import java.text.dateformat; import java.text.simpledateformat; import java.util.date; public class fragment1 extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view root = inflater.inflate(r.layout.fragment1, container, false); dateformat dateformat = new simpledateformat("hh:mm:ss"); date date = new date(); string time = dateformat.format(date); textview tv1 = (textview) root.findviewbyid(r.id.tv1); tv1.settext(time); return root; } } fragment2.java:
package com.tabs.example; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.textview; import java.text.dateformat; import java.text.simpledateformat; import java.util.date; public class fragment2 extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view root = inflater.inflate(r.layout.fragment2, container, false); dateformat dateformat = new simpledateformat("hh:mm:ss"); date date = new date(); string time = dateformat.format(date); textview tv2 = (textview) root.findviewbyid(r.id.tv2); tv2.settext(time); return root; } } fragment3.java:
package com.tabs.example; import android.os.bundle; import android.support.v4.app.fragment; import android.view.layoutinflater; import android.view.view; import android.view.viewgroup; import android.widget.textview; import java.text.dateformat; import java.text.simpledateformat; import java.util.date; public class fragment3 extends fragment { @override public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) { view root = inflater.inflate(r.layout.fragment3, container, false); dateformat dateformat = new simpledateformat("hh:mm:ss"); date date = new date(); string time = dateformat.format(date); textview tv3 = (textview) root.findviewbyid(r.id.tv3); tv1.settext(time); return root; } }
you can cache them setting viewpageradapter this:
mviewpager.setoffscreenpagelimit(3);
Comments
Post a Comment