我试图在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);
答案 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;
}
}