ActionBar bar = getActionBar();
bar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
給viewPager綁定一個FragmentPagerAdapter
public static class TabsAdapter extends FragmentPagerAdapter
implements ActionBar.TabListener, ViewPager.OnPageChangeListener
mTabsAdapter = new TabsAdapter(this, mViewPager);
mTabsAdapter.addTab(bar.newTab().setText(R.string.tab_receive),
ReceiveFragment.class, null);
在TabsAdapter的構造函數裡完成對ViewPager監聽器的綁定
mViewPager.setAdapter(this);
mViewPager.setOnPageChangeListener(this);
在addTab方法裡給ActionBar添加标簽,給标簽設定TabListener,監聽TabSeclected,并且将Fragment先儲存到TabInfo然後通過setTag和标簽綁定。
public void addTab(ActionBar.Tab tab, Class<?> clss, Bundle args) {
TabInfo info = new TabInfo(clss, args);
tab.setTag(info);
tab.setTabListener(this);
mTabs.add(info);
mActionBar.addTab(tab);
notifyDataSetChanged();
}
綁定的Fragment将在FragmentPagerAdapter的getItem方法裡通過instantiate加載。
public Fragment getItem(int position) {
TabInfo info = mTabs.get(position);
if (info.fragment == null) {
info.fragment = Fragment.instantiate(mContext, info.clss.getName(), info.args);
}
return info.fragment;
}
onTabSelected時,通過mViewPager.setCurrentItem(i);切換頁面。