2013-03-07 3 views
0

나는 전체 Fragment-way-of-thinking에 대해 다소 혼란스러워합니다. 나는 Google Play app처럼 Fragments으로 ViewPager을 만드는 법에 대한 튜토리얼을 따라 갔다.ViewPager의 안드로이드 조각

public class SwipeyTabFragment extends SherlockFragment { 

    @Override 
    public void onCreate(Bundle b) { 
     super.onCreate(b); 
     Log.e("FRAGMENT: ", "Hello World!"); 
    } 

    public static Fragment newInstance(String title) { 
     SwipeyTabFragment f = new SwipeyTabFragment(); 
     Bundle args = new Bundle(); 
     args.putString("title", title); 
     f.setArguments(args); 
     return f; 
    } 

    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 
     ViewGroup root = (ViewGroup) inflater.inflate(R.layout.fragment_swipeytab, null); 
     final String title = getArguments().getString("title"); 
     ((TextView) root.findViewById(R.id.text)).setText(title); 
     return root; 
    } 
} 

나는 onCreateView 방법은 레이아웃 등 Button, ListView과 같은 controlls를 초기화 것을 알고 :

나는 이와 같은 TabFragment 클래스가 있습니다. 에 이상

FragmentAdapter

private class SwipeyTabsPagerAdapter extends FragmentPagerAdapter implements SwipeyTabsAdapter { 

     private final Context mContext; 

     public SwipeyTabsPagerAdapter(Context context, FragmentManager fm) { 
      super(fm); 
      this.mContext = context; 
     } 

     @Override 
     public Fragment getItem(int position) { 
      return SwipeyTabFragment.newInstance(TITLES[position]); 
     } 

     @Override 
     public int getCount() { 
      return TITLES.length; 
     } 

     public TextView getTab(final int position, SwipeyTabs root) { 
      TextView view = (TextView) LayoutInflater.from(mContext).inflate(R.layout.swipey_tab_indicator, root, false); 
      view.setText(TITLES[position]); 
      view.setOnClickListener(new OnClickListener() { 
       public void onClick(View v) { 
        mViewPager.setCurrentItem(position); 
       } 
      }); 
      return view; 
     } 

    } 

이 단지 텍스트와 Fragment의 헤더를 설정하는 문자열 배열을 기반으로 새 탭을 구성합니다.

그래서 여기가 혼란 스럽습니다. 예를 들어, 레이아웃이 다른 여러 조각이 있고, 사용자가 Button, Picture 등을 누르면 다른 상호 작용 방식이 필요하다고 말하십시오. 그렇게하려면 어떻게해야합니까?

감사합니다.

답변

1

모든 '사용자 프레스 버튼'항목이 조각에서 처리되므로 Activity으로 다시 전화 할 수 있습니다 (here 참조). 다른 레이아웃, 논리에 대해 서로 다른 조각 클래스를 만들어야합니다. ViewPager에 getItem으로 반환하십시오. FirstPageFragment와 SecondPageFragment를 가질 수 있으며, 인덱스에 따라 getView에 반환 할 수 있습니다. 이러한 조각이 물론 다른 기능을 가지고있는 경우에만 의미가 있습니다. 귀하의 코멘트에 관한 :

나는 당신이 원하는 정확히 모르겠지만, 당신은 당신의 SwipeyTabFragment이 이미 자신의 파일에 정의가

EDIT) 은 무슨 뜻인지 분명 바랍니다. 이것을 가져 와서 수정하고, 다른 레이아웃과 다른 기능을 부여한 다음, OtherFragment 등으로 호출하십시오. 앱에 2 개의 다른 '페이지'를 갖고 싶다고 가정하면 어댑터의 getCount() 메소드가 ViewPager의 '페이지'수를 정의하므로 2를 반환하도록합시다. getItem() 방법에서 , ifposition 0, 그것은 다시 표시하여 SwipeyFragment, else (position 1)가 새 OtherFragment를 반환 할 수 있습니다. 이제 완전히 다른 용도로 사용할 수있는 2 개의 다른 단편으로 ViewPager을 보유하게되었습니다.

+0

고마워요! 기본 코드 샘플, 특히 getItem 메소드에 대한 샘플 코드를 제공 할 시간이 있습니까, 어떻게해야하는지 잘 모르겠습니다. –