2013-05-20 41 views
0

我想在viewpager中多次使用一個片段,我試圖使用ViewPager構建動態更新的UI。我想要使​​用相同的設計,基本上每個頁面具有不同數據的相同片段,但我不知道如何執行此操作。任何建議? 這是可能適配器,FragmentActivity和片段在viewpager中多次使用一個片段

public MonPagerAdapter(FragmentManager fm, List<Fragment>fragments) 
{ 
    super(fm); 
    this.fragments = fragments; 
} 

@Override 
public Fragment getItem(int position) 
{ 
    return this.fragments.get(position); 
} 
@Override 
public int getCount() 
{ 
    return this.fragments.size(); 
} 
@SuppressWarnings("deprecation") 
@Override 
public Object instantiateItem(View pager, int position) 
{ 
    //CalendrierMens cm = new CalendrierMens(); 
    CalendrierMens cm = new CalendrierMens(); 
    cm.date_actuelle.set(cm.date_actuelle.get(Calendar.MONTH), 1); 
    cm.updateTable(cm.date_actuelle.get(Calendar.YEAR), cm.date_actuelle.get(Calendar.MONTH), cm.date_actuelle.get(Calendar.DAY_OF_MONTH)); 
    ((ViewPager)pager).addView(CalendrierMens.newInstance().getView()); 
    return super.instantiateItem(pager, position); 
} 

super.onActivityCreated(savedInstanceState); 
    mois_annee = (TextView)getActivity().findViewById(R.id.mois_annee); 
    mois_annee.setText(getMonthForInt(date_actuelle.get(Calendar.MONTH)+1)+" "+date_actuelle.get(Calendar.YEAR)); 
    this.creerGrille(); 
    this.updateTable(date_actuelle.get(Calendar.YEAR), date_actuelle.get(Calendar.MONTH), date_actuelle.get(Calendar.DAY_OF_MONTH)); 
} 
public static CalendrierMens newInstance() 
{ 
    CalendrierMens fragment = new CalendrierMens(); 
    //Bundle args = new Bundle(); 
    //args.put 
    //fragment.setArguments(args); 
    return fragment; 
} 

super.onCreate(savedInstanceState); super.setContentView(R.layout.viewpager);

// Création de la liste des Fragments que fera défiler le PagerAdapter 
    List<Fragment>fragments = new Vector<Fragment>(); 

    // Ajout des Fragments dans la liste 
    fragments.add(Fragment.instantiate(this,CalendrierMens.class.getName())); 
    //fragments.add(Fragment.instantiate(this,PageMilieuFragment.class.getName())); 
    //fragments.add(Fragment.instantiate(this,PageDroiteFragment.class.getName())); 

    // Création de l'adapter qui s'occupera de l'affichage de la liste des Fragments 
    this.monPagerAdapter = new MonPagerAdapter(super.getSupportFragmentManager(), fragments); 

    ViewPager pager = (ViewPager) super.findViewById(R.id.viewpager); 
    // Affectation de l'adapter au ViewPager 
    pager.setAdapter(this.monPagerAdapter); 
+0

我創建一個包含我的月曆的代碼片段,fragmentActivity是管理我的Viewpageradapter,並繼承FragmentPagerAdapter –

+0

適配器,這是我的適配器的代碼:public Object instantiateItem(View pager,int position) \t { \t \t // CalendrierMens cm = new CalendrierMens(); \t \t CalendrierMens cm = new CalendrierMens(); \t \t cm.date_actuelle.set(cm.date_actuelle.get(Calendar.MONTH),1); (cmdate_actuelle.get(Calendar.YEAR),cm.date_actuelle.get(Calendar.MONTH),cm.date_actuelle.get(Calendar.DAY_OF_MONTH));或者使用cm.date_actuelle.get(Calendar.MONTH),cm.date_actuelle.get(Calendar.DAY_OF_MONTH) ((ViewPager)pager).addView(CalendrierMens.newInstance()。getView()); \t \t return super.instantiateItem(pager,position); \t} –

+0

編輯你的問題和帖子相關的代碼片斷 – Blackbelt

回答

0

使用FragmentStatePagerAdapter

private class MyPagerAdapter extends FragmentStatePagerAdapter { 

    public MyPagerAdapter(FragmentManager fm) { 
     super(fm); 
    } 

    @Override 
    public CharSequence getPageTitle(int position) { 
     String title = ""; 
     return title; 
    } 

    @Override 
    public Fragment getItem(int arg0) { 

     CalendrierMens cm = new CalendrierMens(); 
     Bundle bundle = new Budle(); 
     switch(arg0) { 
     case 0: 
      // set args for case 0 
      break; 
     } 
     cm.setArguments(bundle); 
     return cm; 
    } 


} 
+0

不幸的是,這並沒有改變任何東西,我想當我滑向右側或左側當前月份的變化,也許我有代碼更改日期的問題 –

+0

是那instantiateItem是一個強制方法?內容是否正確?並且我不需要實現監聽器? –

+0

如果您擴展FragmentStatePagerAdapter它不是 – Blackbelt