Android ViewPager w /多个片段类每个w /独立的布局文件

问题描述:

我的应用程序使用android.support.v4.view.ViewPager类。对于ViewPager中的每个页面,我希望在那里有一个片段,每个都有自己的布局文件。每个片段都在其自己的文件中定义。我很难实现这一点。为了澄清,有:Android ViewPager w /多个片段类每个w /独立的布局文件

1 ViewPager
4的片段文件 - FragmentOne.class,FragmentTwo.class,FragmentThree.class,FragmentFour.class
4 XML布局文件 - frag_one.xml,frag_two.xml,frag_three。 xml,frag_four.xml

我见过的例子只处理一个布局文件。

这里是我的FragmentActivity其中ViewPager举行:

public class Main extends FragmentActivity { 
    MyAdapter mAdapter; 
    ViewPager mPager; 

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

     mAdapter = new MyAdapter(getSupportFragmentManager()); 

     mPager = (ViewPager) findViewById(R.id.pager); 
     mPager.setAdapter(mAdapter); 

    } 

    public static class MyAdapter extends FragmentPagerAdapter { 
     public MyAdapter(FragmentManager fm) { 
      super(fm); 
     } 

     @Override 
     public int getCount() { 
      return 4; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return EditorFragment.newInstance(position); 
     } 
    } 

} 

我的主要问题是:我如何获取适配器,MyAdapter,认识到四个独立的片段文件并顺利页跨越他们ViewPager?我应该怎样修改getItem()

任何帮助表示赞赏。

编辑:

所以,我想建议什么lulumeya以及与此想出了:

编辑2:是的,那些break语句固定它。它现在有效。感谢所有帮助过的人!现在我有一个很好的隔离,谢谢。

@Override 
    public Fragment getItem(int position) { 
     Fragment f = new Fragment(); 

     switch (position) { 
     case 0: 
      f = FragmentOne.newInstance(position); 
        break; 
     case 1: 
      f = FragmentTwo.newInstance(position); 
        break; 
     case 2: 
      f = FragmentThree.newInstance(position); 
        break; 
     case 3: 
      f = FragmentFour.newInstance(position); 
        break; 
     } 

     return f; 
    } 

该应用程序启动,这总是一个好兆头,但卡在布局四。当我向右页时,它也是布局四,适用于所有页面。我肯定会改变每个片段的充气器布局。我仍将继续努力。 @lulumeya - 这是你的意思吗?

+1

你忘了在你的每个'f = Fragment ...'行之后加上'break'。 – 2012-02-05 03:34:55

只需按位置在getItem(int position)中返回适当的Fragment实例。 使用开关〜的情况下,很容易。

+0

谢谢,让我试试这个。我会告诉你它是否有效。 – mas 2012-02-05 02:05:27

+0

我做了一个编辑,你的意思是? – mas 2012-02-05 02:30:36

+0

是的,没错。 – lulumeya 2012-02-05 03:54:17