点击RadioGroup切换Fragment

来源:互联网 发布:bmob数据库 编辑:程序博客网 时间:2024/06/05 04:11

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;    }}
阅读全文
0 0
原创粉丝点击