问题:Activity finish 后 RadioButton 依旧保存状态值

今天改需求。突然发现用radiobutton来改变页面顺序失效的BUG。啊啊啊,还好没被老大发现(手动滑稽)。。。。

OK,今天的问题是radiobutton选中后,当前Activity消失,在进入页面时发现,我明明选的是第三个,怎么变成了第一个,我设置的是选中即发送请求,那么每次在进入此页面的时候岂不是都要发送一遍第一个按钮的值,在选择在发送。好乱的有木有。。

在网上找了好多,最开始是根据activity的onSaveInstanceState 来保存状态但是看了一圈,没有采用,我页没有验证那种方法好不好用,直接放弃(我承认我很懒)。

后来一想我直接用sharedpreference 来保存状态值不就好了嘛,就是这样。开干,发现不对。我是每一个按钮保存一个。后来发现这种做法好二奥。

先上代码吧,没代码说什么都没用,代码才是王道。

/**
*    这个就是RadioButton 的监听方法
*    checkedId  这个是RadioButton的ID
**/
 @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        switch (checkedId) {
            case R.id.RB_urge:
                requestData("0");//这是我的请求方法
                //保存的状态值,这里我用的是加密的SP
                AES256SharedPreferences.getInstance().edit().<Integer>putInt("1", checkedId).apply();
                break;
            case R.id.RB_postpone:
                requestData("1");
                AES256SharedPreferences.getInstance().edit().<Integer>putInt("1", checkedId).apply();
                break;
            case R.id.RB_time:
                requestData("2");
                AES256SharedPreferences.getInstance().edit().<Integer>putInt("1", checkedId).apply();
                break;
            default:
                break;
        }
    }

RadioGroup 的改变状态监听方法就不贴了,在onCreated中

 

       
        /*这里是给每个radiobutton重新ser一个ID,跟在XML里设置的一致就行*/
        RB1.setId(R.id.RB_1);
        RB2.setId(R.id.RB_2);
        RB3.setId(R.id.RB_3);
        //获取上面点击按钮存入的值
        int s = AES256SharedPreferences.getInstance().getInt("1", 0);
        /*进行依次对比,方法都在onCreated中*/
        if (s == R.id.RB_1) {
            RB1.setChecked(true);
        }
        if (s == R.id.RB_2) {
            RB2.setChecked(true);
        }
        if (s == R.id.RB_3) {
            RB3.setChecked(true);
        }

这样就完成了,代码比较粗糙。但是功能实现了,各位大大如果有什么好的想法欢迎留言哈

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 6
    评论
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值