2016-12-07 4 views
0

У меня есть эти Radiobuttons настроенные в RadioGroup:RadioButton проверяется программно не отмените

<RadioGroup 
      android:id="@+id/radioGroupLeakTight" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:orientation="horizontal"> 

    <RadioButton 
       android:text="@string/action_yes" 
       android:id="@+id/radioLeakTightYes" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"/> 

    <RadioButton 
       android:text="@string/action_no" 
       android:id="@+id/radioLeakTightNo" 
       android:layout_width="wrap_content" 
       android:layout_height="wrap_content"/> 

</RadioGroup> 

С кодом ниже я пытаюсь переключить одну из радиокнопок с помощью кода:

radioGroupLeakTight.check((currentTask.isLeakTight() ? R.id.radioLeakTightYes : R.id.radioLeakTightNo)); 

Если я не использую вышеуказанный код, RadioButtons работает так, как планировалось: всякий раз, когда кто-то проверяется, другой получает флажок. Если я использую код для предварительной проверки одного из RadioButtons, эта функция будет потеряна. Всякий раз, когда я пытаюсь проверить RadioButton, другой остается включенным.

Я читал решения, где я должен был бы использовать «OnCheckedChangeListener» и сам переключать их. Но я думаю, это просто прикрывает что-то еще, что не работает, нет? Я также читал людей, у которых были эти проблемы, но у них отсутствовала RadioGroup, что у меня явно есть.

Что я делаю неправильно? Единственное решение, действительно реализующее «OnCheckedChangeListener» и переключение других RadioButtons?

UPDATE 08/12/2016:

Таким образом, я продолжил поиски и реализован 'OnCheckedChanged'. Теперь я вижу, что всякий раз, когда я проверяю один из RadioButtons, это событие никогда не запускается. Слушатель установлен на 2 радиогруппах. Я начинаю подозревать, что эти RadioButtons теряют членство в RadioGroup? Всякий раз, когда я проверяю их через код (после того, как я устанавливаю своих слушателей), событие успешно завершается.

ответ

0

Использовать clearCheck() для радиогрупп. Learn more. Если вам нужно проверить другой RadioButton, вы можете сделать это после этого.

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

RadioButton radioLeakTightYes = (RadioButton) findViewById(...); 
RadioButton radioLeakTightNo = (RadioButton) findViewById(...); 

radioGroupLeakTight.clearCheck(); 
if(currentTask.isLeakTight()){ 
    radioGroupLeakTight.check(radioLeakTightYes.getId()); 
} else { 
    radioGroupLeakTight.check(radioLeakTightNo.getId()); 
} 
+0

Использование clearCheck означает, что я должен выполнять слушателя. Это действительно единственный способ? –

+0

редактирование даст вам представление о том, что я имел в виду. Это применимо? – rupinderjeet

+0

Прошу прощения, возможно, мой вопрос был недостаточно ясен. Я знаю, как я могу очистить и переключить RadioButtons с помощью кода. Но после того, как я проверю один из них программно, функция автоматического переключения будет потеряна, когда пользователь попытается ее использовать. Тогда будут проверены оба значения. –