RadioGroup获取到上一个选中的radioBtnID实现还原选中上一个radiobtn

来源:互联网 发布:搞怪相机软件大全 编辑:程序博客网 时间:2024/06/14 23:46

自定义OnCheckedChangeListener 监听

在项目中有这样的一个需求
如果某个 radioBtn被点击的时候,根据判断没有登录,那么跳转到登录界面,
如果取消登录了,就把radiobtn还原到之前被选中的radiob
实现逻辑:
自定义MyOnCheckedChangeListener 监听
添加变量 记录上一次选中的checkedId

//        初始化 默认为选中的 radiobtn ID        private int mLsatCheckedId = mMainRg.getCheckedRadioButtonId();        //       获取上一个选中的 radioBtn Id//       只在onCheckedChanged监听方法,更新lastCheckedId的值  mLsatCheckedId = checkedId; 前面获取是有效的        public int getLsatCheckedId() {            return mLsatCheckedId;        }

在点击的时候判断是否已经登录,
如果没有登录跳转到登录activity

 //    radioGroup 改变监听    class MyOnCheckedChangeListener implements RadioGroup.OnCheckedChangeListener {        @Override        public void onCheckedChanged(RadioGroup group, int checkedId) {            switch (checkedId) {                case R.id.main_rb_myhome:                    if (checkIsLogin()) {                    } else {//                        如果没有登录 跳转到 登录界面                        Intent intent = new Intent(getApplicationContext(), LoginActivity.class);//                        将上一个选择的 checkedId 传入,如果登录失败,radioGroup check()上一个radiobtn                   LoginActivityintent.putExtra(ConstantsString.INTENT_MAIN_LAST_CHECKED_ID, getLsatCheckedId());                    // !!! 传入参数之后 一定要clearCheck,方便在onActivityResult() 回调中 mMainRg.check();                        mMainRg.clearCheck();                        startActivityForResult(intent, ConstantsNum.REQUEST_CODE_START_LOGIN_ACTIVITY);                    }                    break;            }//            更新lastCheckedId的值            mLsatCheckedId = checkedId;        }        private boolean checkIsLogin() {            return false;        }//        初始化 默认为选中的 radiobtn ID        private int mLsatCheckedId = mMainRg.getCheckedRadioButtonId();        //       获取上一个选中的 radioBtn Id//       只在onCheckedChanged监听方法,更新lastCheckedId的值  mLsatCheckedId = checkedId; 前面获取是有效的        public int getLsatCheckedId() {            return mLsatCheckedId;        }    }

在onActivityResult方法回调中处理

如果取消登录, 那么还原之前选中的radiobtn

  @Override    protected void onActivityResult(int requestCode, int resultCode, Intent data) {        super.onActivityResult(requestCode, resultCode, data);//        如果为取消登录 radioGroup 回归到上一个checked radioBtn        if (resultCode == ConstantsNum.RESULT_CODE_CANCLE_LOGIN) {          // 选择之前的radiobtn  mMainRg.check(data.getIntExtra(ConstantsString.INTENT_MAIN_LAST_CHECKED_ID, 0));        }        }

关于Activity直接 怎么传递参数和获取参数 参考另一篇博客> http://blog.csdn.net/qq_27853161/article/details/60466070

0 0
原创粉丝点击