2012-02-05 2 views
4

내 앱은 android.support.v4.view.ViewPager 클래스를 사용합니다. ViewPager의 각 페이지에 대해 하나의 Fragment가 있고, 각 Fragment에는 자체 레이아웃 파일이 있어야합니다. 각 Fragment는 자체 파일에 정의됩니다. 나는 이것을 시행하는데 어려움을 겪고있다. 명확히하기 위해,이 :안드로이드 ViewPager 여러개의 조각 클래스가 각각의 레이아웃 파일에 있습니다

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()은 어떤 종류의 수정을해야합니까?

도움을 주시면 감사하겠습니다.

는 편집 :

편집 2 : 그래서, 내가 무엇을 제안 lulumeya 노력이 함께했다

예, 그 휴식 문을 고정. 이제 작동합니다. 도와 주신 모든 분들께 감사드립니다! 이제 나는 훌륭한 인종 차별, 감사합니다.

@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; 
    } 

앱 표시는 항상 좋은 징조이지만 레이아웃 4에 고정되어 있습니다. 오른쪽으로 페이지를 이동하면 모든 페이지에 대해 레이아웃 4가됩니다. 각 조각에 대한 인플레이 트의 레이아웃을 변경해야했습니다. 나는 아직도 이것에 대해 연구 할 것이다. @lulumeya -이게 당신이 의미 한 것입니까?

+1

'f = Fragment ...'줄마다'break'를 추가하는 것을 잊어 버렸습니다. –

답변

5

위치별로 getItem (int 위치)의 적절한 Fragment 인스턴스를 반환하십시오. 사용 스위치 ~ 케이스, 쉽습니다.

+0

고마워, 이걸 시험해 보게. 그것이 효과가 있는지 알려 드리겠습니다. – mas

+0

내가 편집 했어, 그게 무슨 뜻이야? – mas

+0

네, 맞습니다. – lulumeya