2013-03-07 81 views
0

我對整個碎片思維方式感到困惑。我已經按照教程介紹瞭如何使用Fragments創建ViewPager,如Google Play應用。ViewPager中的Android碎片

我TabFragment類像這樣的:

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方法初始化佈局和類似ButtonListView等等controlls。

到我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; 
     } 

    } 

這將只是構建基於一個String數組,這將設置文本和Fragment的頭一個新的標籤。

所以這就是我困惑的地方。舉例來說,我想要幾個不同佈局的片段,以及當用戶按下ButtonPicture或其他什麼時,不同的交互方式。我該怎麼做?

謝謝。

回答

1

所有'用戶按下按鈕'的東西在碎片中處理,當您需要時可以回撥到Activity(請參閱here)。 您必須爲不同的佈局,邏輯創建不同的片段類。並將它們返回到getItem的ViewPager。你可以有一個FirstPageFragment和一個SecondPageFragment,然後返回它們(取決於索引)在getView。這隻有當這些碎片具有不同的功能時纔有意義。 希望很清楚我在說什麼;)

編輯:以您的評論:

我不知道你想做什麼,但你必須在它自己的文件中已經定義了SwipeyTabFragment。接下來,修改它,給它另一個佈局和其他功能,然後稱之爲OtherFragment或其他功能。假設您想在應用中使用2個不同的'頁面' - 您的適配器中的getCount()方法定義ViewPager中'頁面'的數量,所以讓我們讓它返回兩個。 在getItem()方法中,ifposition爲0,讓它返回您的SwipeyFragment,elseposition爲1)讓它返回您的新OtherFragment。現在你有一個ViewPager兩個不同的碎片,可以完全不同的目的。

+0

謝謝!你有沒有時間給我一些基本的代碼示例,特別是getItem方法,我不知道我應該怎麼做。 – 2013-03-07 09:59:08