在viewpager中多次使用一个片段

时间:2013-05-20 10:41:47

标签: android

我试图在viewpager中多次使用一个片段,我正在尝试使用ViewPager构建动态更新的UI。我想使用相同的设计,基本上相同的片段,每页都有不同的数据,但我不知道如何做到这一点。有什么建议吗? 这可能是Adapter,FragmentActivity和fragment

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);

1 个答案:

答案 0 :(得分: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;
    }


}