一个片段类的多个实例

时间:2012-07-26 17:53:10

标签: android android-viewpager

我试图创建一个包含几页的viewpager,问题是所有页面看起来都一样(只是不同的数据),所以我创建了一个片段类,并且我试图添加到同一个类的viewpager适配器实例......但我不能......

如何使一个viewpager使每个页面都是同一个片段类的实例? 含义:相同的设计 - 不同的数据

修改... 我从这里拿了一般代码...... http://tamsler.blogspot.co.il/2011/10/android-viewpager-and-fragments.html

然后把它扯了一下

public class MainActivity extends FragmentActivity {

private com.example.trying1.PagerAdapter mAdapter;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initPaging();
}

private void initPaging() {
    List<Fragment> fragments = new ArrayList<Fragment>();
    NoteFragment nf = new NoteFragment();
    Bundle bundle = new Bundle();
    bundle.putString("noteTitle", "A");
    nf.setArguments(bundle);

    NoteFragment nf1 = new NoteFragment();
    Bundle bundle1 = new Bundle();
    bundle1.putString("noteTitle", "B");
    nf1.setArguments(bundle1);

    fragments.add(nf);
    fragments.add(nf1);
    this.mAdapter = new com.example.trying1.PagerAdapter(
            getSupportFragmentManager(), fragments);

    ViewPager vPager = (ViewPager) findViewById(R.id.pager);
    vPager.setAdapter(this.mAdapter);
}

}

1 个答案:

答案 0 :(得分:0)

你可以。您是收到错误还是数据未更新?

编辑:

它还取决于您如何编码片段,接受作为参数并计算页面?

public class MainActivity extends FragmentActivity {

private MyFragmentPagerAdapter mAdapter;    
private List<Fragment> fragments;

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_main);

    initPaging();
}

private void initPaging() {
    fragments = new ArrayList<Fragment>();
    this.mAdapter = MyFragmentPagerAdapter(
            getSupportFragmentManager());
    ViewPager vPager = (ViewPager) findViewById(R.id.pager);

    //Add 3 fragments
     for(int i =0; i<3; i++)
       addFragments(i);

    //Set adapter     
     vPager.setAdapter(this.mAdapter);
}

 private void addFragments(int i){
   NoteFragment nf = new NoteFragment(i); //Pass data to the fragment, so it can process it
   //You may pass it as a bundle if you wish
   fragments.add(nf)
}    

//适配器代码

private static class MyFragmentPagerAdapter extends FragmentPagerAdapter {  

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

           @Override  
           public Fragment getItem(int index) {     
                return fragments.get(index);
           }  

           @Override  
           public int getCount() {     
                return fragments.size();  
           }  
      }  

}