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);切换页面。