1、框架的搭建:Fragment、RadioGroup组成。
2、Main的主布局由,帧布局和RadioGroup组成,在MainActivity中创建Fragment,组成集合,添加到帧布局中。
3、设置RadioGroup的按键监听,记录坐标,从相应的Fragment集合中获取相对应的fragment。
private void initData() {
fragments = new ArrayList<>();
shopFragment = new ShopFragment();
fragments.add(shopFragment);
fragments.add(new MgzFragment());
fragments.add(new DarenFragment());
fragments.add(new GoodFragment());
fragments.add(new SelfFragment());
}
private void initView() {
rgMain.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
switch (checkedId) {
case R.id.rb_shop:
prePosition = 0;
relativelayoutMain.setVisibility(View.VISIBLE);
break;
case R.id.rb_mgz:
prePosition = 1;
relativelayoutMain.setVisibility(View.GONE);
break;
case R.id.rb_daren:
prePosition = 2;
relativelayoutMain.setVisibility(View.GONE);
break;
case R.id.rb_good:
prePosition = 3;
relativelayoutMain.setVisibility(View.GONE);
break;
case R.id.rb_self:
prePosition = 4;
relativelayoutMain.setVisibility(View.GONE);
break;
}
BaseFragment baseFragment = fragments.get(prePosition);
switchFragment(baseFragment);
}
});
}
4、设置缓存,判断缓存的Fragment是否和显示的是不是同一个,如果不是,切换。
private void switchFragment(BaseFragment baseFragment) {
if (tempFragment != baseFragment) {
FragmentTransaction ft = getSupportFragmentManager().beginTransaction();
if (!baseFragment.isAdded()) {
if (tempFragment != null) {
ft.hide(tempFragment);
}
ft.add(R.id.fl_main, baseFragment);
} else {
if (tempFragment != null) {
ft.hide(tempFragment);
}
ft.show(baseFragment);
}
ft.commit();
tempFragment = baseFragment;
}
}