Android RadioButton не может быть сброшен с помощью метода setChecked (false) - PullRequest
22 голосов
/ 27 октября 2010

Если я установил переключатель в первый раз, он будет работать нормально.Но если я отменил выбор, вызвав ((RadioButton) findViewById (R.id.ID)). SetChecked (false);затем, даже если я попытаюсь сделать его выбранным, вызвав setChecked (true), не будет работать, если пользователь не выберет его на экране.

Кто-нибудь сталкивался с этим?или это только у меня?

        if(Val != null){
        if( ((RadioButton) findViewById(R.id.ID1)).getText().toString().trim().equals(Val))
        ((RadioButton) findViewById(R.id.ID1)).setChecked(true);
        else if(((RadioButton) findViewById(R.id.ID2)).getText().toString().trim().equals(Val))
        ((RadioButton) findViewById(R.id.ID2)).setChecked(true);
        }
        else {
            ((RadioButton) findViewById(R.id.ID1)).setChecked(false);
            ((RadioButton) findViewById(R.id.ID2)).setChecked(false);
        }

Если часть else выполняется хотя бы один раз, то все становится не так.Когда я перехожу через мой отладчик, я вижу, что выполнение идет по правильному пути и устанавливает его в true.Это выполняется только один раз, я проверял это.И я не сбрасываю его обратно в false в любой другой части кода.

Ответы [ 2 ]

51 голосов
/ 27 октября 2010

Я нашел решение.

Невозможно снять флажок с определенной кнопки-переключателя.Вы можете установить только для другого элемента значение true.

Таким образом, чтобы очистить все отмеченные элементы, вы должны вызвать метод clearcheck() в RadioGroup.

Так что моя другая часть -

        else {
            ((RadioGroup) findViewById(R.id.ID0)).clearCheck();
        }
2 голосов
/ 15 сентября 2013

Возьмите один невидимый переключатель и проверьте его.Все остальные переключатели группы будут автоматически отключены ..

...