Android FragmentActivity How to refresh fragment when it become visible -


i'm developing application android , need implementing tabs

i need compatible android 2.2
started implement tabs dont know if best idea

what want basically:

i want open activity have tabs
in each of tab, want load content dinamicly, play store apk:

play store tabs

my main problem is:

i have created asynctask progressdialog each fragment load data , show on fragment, when fragment activity open, initialize tabs , makes load fragments @ same time.

i want load tab content when tab becomes visible, because user may want see 1 tab, no need other tabs

how should that? should use tabfragments or others methods?

my current tab activiy is:

public class tabs2 extends fragmentactivity implements ontabchangelistener, onpagechangelistener{ viewpageradapter pageadapter; private viewpager mviewpager; private tabhost mtabhost; private string interid;  public void oncreate(bundle savedinstancestate) {     super.oncreate(savedinstancestate);     // infla o layout     setcontentview(r.layout.tablayout);      mviewpager = (viewpager) findviewbyid(r.id.viewpager);      // tab initialization     initialisetabhost();      // fragments , viewpager initialization     list<fragment> fragments = getfragments();     pageadapter = new viewpageradapter(getsupportfragmentmanager(), fragments);     mviewpager.setadapter(pageadapter);     mviewpager.setonpagechangelistener(tabs2.this);  }  // method add tabhost private static void addtab(tabs2 activity, tabhost tabhost, tabhost.tabspec tabspec) {     tabspec.setcontent(activity.new mytabfactory(activity));     tabhost.addtab(tabspec); }  // manages tab changes, synchronizing pages public void ontabchanged(string tag) {     int pos = this.mtabhost.getcurrenttab();     this.mviewpager.setcurrentitem(pos); }  // manages page changes, synchronizing tabs @override public void onpagescrolled(int arg0, float arg1, int arg2) {     int pos = this.mviewpager.getcurrentitem();     this.mtabhost.setcurrenttab(pos); }  @override public void onpagescrollstatechanged(int arg0) { }  @override public void onpageselected(int arg0) { }  private list<fragment> getfragments(){      list<fragment> flist = new arraylist<fragment>();      // put here fragments     flist.add(fragment.instantiate(this, tabfragmenta.class.getname()));         flist.add(fragment.instantiate(this, tabfragmentb.class.getname()));     flist.add(fragment.instantiate(this, tabfragmentc.class.getname()));      return flist; }  // tabs creation private void initialisetabhost() {     mtabhost = (tabhost) findviewbyid(android.r.id.tabhost);     mtabhost.setup();     // put here tabs     tabs2.addtab(this, this.mtabhost, this.mtabhost.newtabspec("tab1").setindicator("detalhes"));     tabs2.addtab(this, this.mtabhost, this.mtabhost.newtabspec("tab2").setindicator("comentários"));     tabs2.addtab(this, this.mtabhost, this.mtabhost.newtabspec("tab3").setindicator("cenas"));     mtabhost.setontabchangedlistener(this); }  // um simples factory que retorna view para o tabhost class mytabfactory implements tabcontentfactory {      private final context mcontext;      public mytabfactory(context context) {         mcontext = context;     }      public view createtabcontent(string tag) {         view v = new view(mcontext);         v.setminimumwidth(0);         v.setminimumheight(0);         return v;     } } 

}

the viewpageradatper:

public class viewpageradapter extends fragmentpageradapter {     private list<fragment> mfragments;      public viewpageradapter(fragmentmanager fm, list<fragment> fragments) {         super(fm);         mfragments = fragments;     }      @override     public fragment getitem(int i) {           return mfragments.get(i);     }      @override      public int getcount() {         return mfragments.size();     } 

}

the xml tabs activiy

<linearlayout xmlns:android="http://schemas.android.com/apk/res/android"   android:layout_width="fill_parent"   android:layout_height="fill_parent"   android:orientation="vertical" >  <tabhost      android:id="@android:id/tabhost"     android:layout_width="fill_parent"     android:layout_height="fill_parent" >      <linearlayout           android:layout_width="fill_parent"           android:layout_height="wrap_content"           android:orientation="vertical" >          <tabwidget             android:id="@android:id/tabs"             android:layout_width="fill_parent"             android:layout_height="35dp"             android:orientation="horizontal"             android:gravity="bottom"             android:padding="0dip" />          <framelayout             android:id="@android:id/tabcontent"             android:layout_width="0dp"             android:layout_height="0dp"             android:layout_weight="0" />          <android.support.v4.view.viewpager             android:id="@+id/viewpager"             android:layout_width="fill_parent"             android:layout_height="fill_parent"             android:isscrollcontainer="true"             android:scrollbars="vertical" />      </linearlayout> </tabhost> 

for each tab used fragments

public class tabfragmenta extends fragment {      @override     public view oncreateview(layoutinflater inflater, viewgroup container, bundle savedinstancestate) {         if (container == null) {             return null;         }         // here call asynctask , return data layout         return (relativelayout) inflater.inflate(r.layout.layout_a, container, false);     } } 

since using viewpager how viewpager works , reason. view pager default loads previous, current , next tab content ready when user gets tab. cannot change viewpager load 1 page @ time.

if notice how play store works


Comments

Popular posts from this blog

How to remove text and logo OR add Overflow on Android ActionBar using AppCompat on API 8? -

html - How to style widget with post count different than without post count -

url rewriting - How to redirect a http POST with urlrewritefilter -