如何检查和取消选中单个单选按钮

时间:2018-08-06 10:36:04

标签: android radio-button

我遇到一个问题,例如单击时选择和取消选择一个单选按钮,setOnCheckChangeListner()仅在下面第一次起作用,这是我尝试过的代码。

radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
           @Override
           public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
               if(isChecked) radioButton.setChecked(false);
               else radioButton.setChecked(true);
           }
       });

3 个答案:

答案 0 :(得分:5)

我已经使用单选按钮的set selected属性解决了这个问题。

final RadioButton radioButton = findViewById(R.id.radioButton);
        radioButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if (!radioButton.isSelected()) {
                    radioButton.setChecked(true);
                    radioButton.setSelected(true);
                } else {
                    radioButton.setChecked(false);
                    radioButton.setSelected(false);
                }
            }
        });

答案 1 :(得分:1)

尝试使用首选项xml来保存点击事件,因为它就像小数据库一样。
How to create RadioButton group in preference.xml window?

答案 2 :(得分:0)

您正在生成一个无限循环。这将导致stackoverflow错误。

因为您正在onCheckedChanged内更改单选按钮的选中状态。

如果您需要更改检查状态,请单击一个按钮。

请勿更改onCheckedChanged内部的支票状态

在某些情况下,您可能需要更改RadioButton的状态。为此,您将执行以下操作。

public class MainActivity extends AppCompatActivity {
    RadioButton radioButton = null;
    CompoundButton.OnCheckedChangeListener listener;

    @Override
    protected void onCreate(@Nullable Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        listener = new CompoundButton.OnCheckedChangeListener() {
            @Override
            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
                // TODO: 8/6/2018 your logics 
            }
        };
        radioButton.setOnCheckedChangeListener(listener);

        changeStatus(radioButton, true);
    }

    private void changeStatus(RadioButton radioButton, boolean status){
        radioButton.setOnCheckedChangeListener(null);
        radioButton.setChecked(status);
        radioButton.setOnCheckedChangeListener(listener);
    }
}

当您需要更改状态时,请致电

changeStatus(radioButton, true);