在项目中 用的是ViewPager+RadioGroup+Fragment实现页面的跳转。
public class MainActivity extends FragmentActivity implements RadioGroup.OnCheckedChangeListener, ViewPager.OnPageChangeListener {
private TextView text_TopBar;
// 底部状态栏
private RadioGroup rg_tab_bar;
// 底部状态按钮
private RadioButton rb_channel;
private RadioButton rb_message;
private RadioButton rb_better;
private RadioButton rb_setting;
private RadioButton rb_my;
// ViewPager
private ViewPager viewPager;
// Fragment适配器
MyFragmentPagerAdapter adapter;
// 判断fragment的静态页数
public static final int PAGE_ONE = 0;
public static final int PAGE_TWO = 1;
public static final int PAGE_THREE = 2;
public static final int PAGE_FOUR = 3;
public static final int PAGE_FIVE = 4;
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
bindViews();
}
// 基本内容实例化方法
private void bindViews() {
text_TopBar = findViewById(R.id.title);
viewPager = findViewById(R.id.viewPager);
rg_tab_bar = findViewById(R.id.bottom_bar);
rb_channel = findViewById(R.id.shouye);
rb_message = findViewById(R.id.hangqing);
rb_better = findViewById(R.id.guangchang);
rb_setting = findViewById(R.id.qiuhuo);
rb_my = findViewById(R.id.wode);
// 实例化适配器
adapter = new MyFragmentPagerAdapter(getSupportFragmentManager());
// 设置监听
rg_tab_bar.setOnCheckedChangeListener(this);
// viewpager加载适配器
viewPager.setAdapter(adapter);
viewPager.setCurrentItem(0);
viewPager.addOnPageChangeListener(this);
rb_channel.setChecked(true);
}
@Override
public void onPageScrolled(int i, float v, int i1) {
}
@Override
public void onPageSelected(int i) {
}
@Override
public void onPageScrollStateChanged(int i) {
// 0什么都不做 1 正在滑动 2 滑动结束
if (i == 2) {
switch (viewPager.getCurrentItem()) {
case PAGE_ONE:
rb_channel.setChecked(true);
break;
case PAGE_TWO:
rb_message.setChecked(true);
break;
case PAGE_THREE:
rb_better.setChecked(true);
break;
case PAGE_FOUR:
rb_setting.setChecked(true);
break;
case PAGE_FIVE:
rb_my.setChecked(true);
break;
}
}
}
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.shouye:
break;
case R.id.hangqing:
break;
case R.id.guangchang:
break;
case R.id.qiuhuo:
viewPager.setCurrentItem(PAGE_FOUR);
// 更新标题栏内容
text_TopBar.setText("求货更新的信息");
break;
case R.id.wode:
viewPager.setCurrentItem(PAGE_FIVE);
text_TopBar.setText("我的");
break;
}
}
}
主要是用FragmentAdapter来实例化自定义的适配器。与MainActivity 中的页数绑定。
public class MyFragmentPagerAdapter extends FragmentPagerAdapter {
// fragment总数
private final int PAGER_CONUT = 5;
private Fragment1 myFragment1;
private Fragment2 myFragment2 = null;
private Fragment3 myFragment3 = null;
private Fragment4 myFragment4 = null;
private Fragment5 myFragment5 = null;
public MyFragmentPagerAdapter(FragmentManager fm) {
super(fm);
myFragment1 = new Fragment1();
myFragment2 = new Fragment2();
myFragment3 = new Fragment3();
myFragment4 = new Fragment4();
myFragment5 = new Fragment5();
}
@Override
public Fragment getItem(int i) {
Fragment fragment = null;
switch (i) {
case MainActivity.PAGE_ONE:
fragment = myFragment1;
break;
case MainActivity.PAGE_TWO:
fragment = myFragment2;
break;
case MainActivity.PAGE_THREE:
fragment = myFragment3;
break;
case MainActivity.PAGE_FOUR:
fragment = myFragment4;
break;
case MainActivity.PAGE_FIVE:
fragment = myFragment5;
break;
}
return fragment;
}
@Override
public int getCount() {
return PAGER_CONUT;
}
}