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

Popular posts from this blog

node.js - Bad Request - node js ajax post -

Why does Ruby on Rails generate add a blank line to the end of a file? -

keyboard - Smiles and long press feature in Android -