使用ViewPager进行Tab标签对应的Fragment切换

来源:互联网 发布:json解析哪些框架 编辑:程序博客网 时间:2024/06/06 02:24
1.在布局文件中使用自定义控件
<android.support.v4.view.ViewPager
....................
>
2.让类继承自FragmentActivity
public class CollectionDemoActivity extends FragmentActivity{
public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_collection_demo);
        ViewPager vp=(ViewPager) findViewById(R.id.vp);
vp.setAdapter(new MainAdapter(getSupportFragmentManager()));
    }
//使用adapter来进行fragment页面的切换
public class MainAdapter extends FragmentStatePagerAdapter{
public MainAdapter( FragmentManager fm) {
super(fm);
}
//根据条目返回fragment
public Fragment getItem(int position) {
if(position==0){
return new HomeFragment();
}
else{
return new AppFragment();
}
}
//条目数
public int getCount() {
return 4;
}

}
}
3.写一个HomeFagment类继承自Fragment,reture 一个 view
4.在ActionBar中添加标签
public void onCreate(Bundle savedInstanceState) {
    final ActionBar actionBar = getActionBar();
    //在ActionBar中显示Tab标签
    actionBar.setNavigationMode(ActionBar.NAVIGATION_MODE_TABS);
//设置Tab监听事件
    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
        }
        public void onTabUnselected(ActionBar.Tab tab, FragmentTransaction ft) {
        }
        public void onTabReselected(ActionBar.Tab tab, FragmentTransaction ft) {
        }
    };
    // 添加3个tabs,以及他们的Text和监听事件
    for (int i = 0; i < 3; i++) {
        actionBar.addTab(
                actionBar.newTab()
                        .setText("Tab " + (i + 1))
                        .setTabListener(tabListener));
    }
}
5.//当Tab改变时同时ViewPager随着改变---当ViewPager改变时同时Tab随着改变
public void onCreate(Bundle savedInstanceState) {
    // tab改变的监听事件
    ActionBar.TabListener tabListener = new ActionBar.TabListener() {
...
        public void onTabSelected(ActionBar.Tab tab, FragmentTransaction ft) {
            //tab的位置对应viewPager的位置
            mViewPager.setCurrentItem(tab.getPosition());
        }
        ...
    };
//viewpager的监听事件
mViewPager = (ViewPager) findViewById(R.id.pager);
mViewPager.setOnPageChangeListener(
            new ViewPager.SimpleOnPageChangeListener() {
.....
                public void onPageSelected(int position) {
                    //viewpager的位置对应tab的位置
                    getActionBar().setSelectedNavigationItem(position);
                }
.....
            });
}

































0 0
原创粉丝点击