天天看點

ActionBar、ViewPager、Fragment的結合實作ActionBar下的标簽頁切換

        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);切換頁面。