android使用radioButton 切换fragment 解决fragment叠影

1 篇文章 0 订阅
1 篇文章 0 订阅
public class MainActivity extends BaseActivity {
    @BindView(R.id.fragment)
    FrameLayout fragment;
    @BindView(R.id.rb_home)
    RadioButton rbHome;
    @BindView(R.id.rb_message)
    RadioButton rbMessage;
    @BindView(R.id.rb_mine)
    RadioButton rbMine;
    @BindView(R.id.rb_more)
    RadioButton rbMore;
    @BindView(R.id.rg)
    RadioGroup rg;
    @BindView(R.id.activity_main)
    RelativeLayout activityMain;

    private int position = 0;
    private final String TAG = "MainActivity";
    private HomeFragment mHomeFragment;
    private MessageFragment mMessageFragment;
    private MineFragment mMineFragment;
    private MoreFragment mMoreFragment;


    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        ButterKnife.bind(this);
        initView();
        setTabSelection(position);
    }

    private void initView() {
        rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub

                switch (checkedId) {
                    case R.id.rb_home:
                        Log.v(TAG, "setupWidgets():radio0 clicked");
                        setTabSelection(0);
                        break;
                    case R.id.rb_message:
                        Log.v(TAG, "setupWidgets():radio1 clicked");
                        setTabSelection(1);
                        break;
                    case R.id.rb_mine:
                        Log.v(TAG, "setupWidgets():radio1 clicked");
                        setTabSelection(2);
                        break;
                    case R.id.rb_more:
                        Log.v(TAG, "setupWidgets():radio1 clicked");
                        setTabSelection(3);
                        break;
                    default:
                        break;
                }
            }
        });
    }


    @Override
    public void onSaveInstanceState(Bundle outState, PersistableBundle outPersistentState) {
        outState.putInt("position", position);
    }

    @Override
    protected void onRestoreInstanceState(Bundle savedInstanceState) {
        position = savedInstanceState.getInt("position");
        setTabSelection(position);
        super.onRestoreInstanceState(savedInstanceState);
    }

    public void setTabSelection(int position) {
        //记录position
        this.position = position;
        //更改底部导航栏按钮状态
        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
        // 先隐藏掉所有的Fragment,以防止有多个Fragment显示在界面上的情况
        hideFragments(transaction);
//        transaction.hide(mHomeFragment).hide(mMessageFragment).hide(mMineFragment).hide(mMoreFragment).commit();
        transaction = getSupportFragmentManager().beginTransaction();
        switch (position) {
            case 0:
                rbHome.setChecked(true);
                if (mHomeFragment == null) {
                    mHomeFragment = new HomeFragment();
                    transaction.add(R.id.fragment, mHomeFragment, "HomeFragment");
                } else {
                    transaction.show(mHomeFragment);
                }
                break;
            case 1:
                rbMessage.setChecked(true);
                if (mMessageFragment == null) {
                    mMessageFragment = new MessageFragment();
                    transaction.add(R.id.fragment, mMessageFragment, "MessageFragment");
                } else {
                    transaction.show(mMessageFragment);
                }
                break;
            case 2:
                rbMine.setChecked(true);
                if (mMineFragment == null) {
                    mMineFragment = new MineFragment();
                    transaction.add(R.id.fragment, mMineFragment, "MineFragment");
                } else {
                    transaction.show(mMineFragment);
                }
                break;
            case 3:
                rbMore.setChecked(true);
                if (mMoreFragment == null) {
                    mMoreFragment = new MoreFragment();
                    transaction.add(R.id.fragment, mMoreFragment, "MoreFragment");
                } else {
                    transaction.show(mMoreFragment);
                }
                break;
        }
        transaction.commit();
    }

    private void hideFragments(FragmentTransaction transaction) {
        if(mHomeFragment!=null)
            transaction.hide(mHomeFragment);
        if(mMessageFragment!=null)
            transaction.hide(mMessageFragment);
        if(mMineFragment!=null)
            transaction.hide(mMineFragment);
        if(mMoreFragment!=null)
            transaction.hide(mMoreFragment);
        transaction.commit();
    }
}

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值