2012-02-05 36 views
4

我的應用程序使用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

回答

5

只需按位置在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