RadioButton и переключатель Android - PullRequest
0 голосов
/ 01 мая 2018

У меня есть переключатель и кнопка RadioButton. Я хочу, чтобы, когда я нажимаю и проверяю переключатель, RadioButton будет отключен и наоборот. Как я могу это сделать?

Мой код:

 Switch switchButton = new Switch(this);
 RadioButton radioButton = new RadioButton(this);

 switchButton.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
            if(switchButton.isChecked()){
                radioButton.setChecked(false);
            }
        }
    });


radioButton.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View v) {
                if(radioButton.isChecked()){
                    switchButton.setChecked(false);
                }
            }
        });

Мой код не работает, как я и просил, пожалуйста, помогите мне, спасибо!

Ответы [ 4 ]

0 голосов
/ 01 мая 2018

Как описано в этом ответе здесь , одна радиокнопка не может быть сброшена. Вместо этого вам нужно очистить всю радиогруппу.

Так что вместо

radioButton.setChecked(false);

вам нужно использовать

((RadioGroup) findViewById(R.id.ID_OF_RADIO_GROUP)).clearCheck();

Кроме того, вы не указали в своем вопросе, что именно не работает, как ожидалось. Если это не решит вашу проблему, прокомментируйте, что именно вы получаете, когда пытаетесь активировать переключатель или переключатель.

РЕДАКТИРОВАТЬ: Кроме того, вы должны использовать setOnCheckedChangeListener() вместо setOnClickListener()

0 голосов
/ 01 мая 2018

Вы должны использовать OnCheckedChangeListener() на switchButton прослушивать изменения состояния в Switch

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

используйте тот же слушатель на вашем RadioButton

0 голосов
/ 01 мая 2018

Вам не нужно использовать setOnClickListener(), но нужно использовать setnCheckedChangeListener()

См. Код ниже

Switch switchButton = new Switch(this);
RadioButton radioButton = new RadioButton(this);

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

radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {
            if(isChecked){
                switchButton.setChecked(false);
            }
        }
    });
0 голосов
/ 01 мая 2018

У вас есть кнопки в вашем представлении? Если вы это сделаете, вам нужно использовать функцию findViewById для привязки к этому представлению для изменения кнопок. Если вы просто программно создаете кнопку, она не будет отображаться в представлении.

RadioButton radioButton = (RadioButton) findViewById(R.id.your_radio_bt_id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...