首页 > 解决方案 > sharedpreferences 和 radioButtons 我无法正确保存一个单选按钮状态

问题描述

正如标题所说,由于某种原因我无法使其工作,我尝试调试但找不到问题,每次当我单击 radio_button_B 时,它都会卡在上面并且永远不会更改为 radio_button_A

static RadioGroup radio_group;
RadioButton radio_button_A;
RadioButton radio_button_B;
private SharedPreferences sp_for_radio;

创建

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_leaderboard);

//ID

    radio_group = findViewById(R.id.radio_group);
    radio_button_A = findViewById(R.id.team_a_radio);
    radio_button_B = findViewById(R.id.team_b_radio);

//SP getBoolean

    sp_for_radio  = getSharedPreferences("sp_radio", MODE_PRIVATE);
    radio_button_A.setChecked(sp_for_radio.getBoolean("team_a_rb", false));
    radio_button_B.setChecked(sp_for_radio.getBoolean("team_b_rb", false));

// onChecked

    radio_group.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {

            SharedPreferences.Editor editor2 = sp_for_radio.edit();
            RadioButton checkedRadioButton = group.findViewById(checkedId);
            // This puts the value (true/false) into the variable
            boolean isChecked = checkedRadioButton.isChecked();

            //

            if (isChecked) {

                if (radio_button_A.getId()==checkedRadioButton.getId()){
                    editor2.putBoolean("team_a_rb", isChecked);
                    editor2.apply();
                }else if (radio_button_B.getId() == checkedRadioButton.getId()){
                    editor2.putBoolean("team_b_rb", isChecked);
                    editor2.apply();
                }
            }
        }
    });


}

标签: javaandroidradio-buttonsharedpreferencesandroid-radiogroup

解决方案


编辑 :

如果(已检查){

                if (radio_button_A.getId()==checkedRadioButton.getId()){
                    editor2.putBoolean("team_a_rb", isChecked);
                    editor2.putBoolean("team_b_rb", false);
                    editor2.apply();
                }else if (radio_button_B.getId() == checkedRadioButton.getId()){
                    editor2.putBoolean("team_b_rb", isChecked);
                    editor2.putBoolean("team_a_rb", false);
                    editor2.apply();
                }
            }

推荐阅读