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


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章