Радиокнопка в группе радио не отображается после нажатия на нее

У меня проблема с переключателем, который находится в группе переключателей.

У меня есть приложение, представляющее собой викторину, и я задаю 5 вопросов.

При запуске приложения в моем эмуляторе Android на все вопросы нет проблем, а только на 3-й вопрос. Когда я щелкаю мышью по переключателю, кажется, что он переключается в проверенное состояние, но затем сразу снимает флажок. Кто-нибудь видел такое поведение?!

Я настраиваю эту группу радио и динамически добавляю 4 радиокнопки в группу радио, а затем использую событие OnCheckedChangeListener(), чтобы зафиксировать изменение.

radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                // TODO Auto-generated method stub
                for(int i=0; i<=3;i++)
                {
                    RadioButton btn = (RadioButton) radioGroup.getChildAt(i);

                    if (btn.isPressed() && questNo < 6)
                    {

                        if (corrAns[questNo-1].equals(btn.getText()) && flag==true)
                        {
                            Log.e(LOG_TAG,"onCheckedChanged: correct answer = btn Text");
                            score++;
                            flag = false;
                            checked = true; 
                        }
                        else if(checked==true)
                        {
                            Log.e(LOG_TAG,"onCheckedChanged: correct answer != btn Text");
                            score--;
                            flag = true;
                            checked=false;
                        }
                    }
                }

                Log.e(LOG_TAG, "Score:"+ Integer.toString(score));
            }
        });

Я заметил, что это происходит случайным образом на разных вопросах и только на первом выбранном переключателе, но если вы выберете другой после этого, функциональность вернется в нормальное состояние. Есть идеи?


person Paul    schedule 17.10.2011    source источник
comment
опубликуйте свой код, и вы с большей вероятностью получите ответ.   -  person FoamyGuy    schedule 18.10.2011
comment
Я опубликую код в ближайшее время. Спасибо.   -  person Paul    schedule 18.10.2011
comment
Вы исправили это? У меня та же проблема, когда я динамически добавляю кнопки, и они работают большую часть времени, но когда я делаю жесты, иногда они запускают OnCheckChangedEvent, но не отображаются как выбранные.   -  person David Silva Smith    schedule 14.02.2012


Ответы (1)


У меня была такая же ошибка. Я также использую динамические радиогруппы и кнопки. Это работает для меня:

private OnCheckedChangeListener rblLikert_Listener = new OnCheckedChangeListener() {
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        int selectedIndex = group.getCheckedRadioButtonId();

        if(selectedIndex != -1)
        {
            m_likertValue = radioButtonValue;
            int buttonId = group.getCheckedRadioButtonId();
            Logger.i("button id: " + String.valueOf(buttonId));
            RadioButton selectedButton = (RadioButton)findViewById(buttonId);
            selectedButton.toggle();
            Logger.i(" is checked: " + String.valueOf(selectedButton.isChecked()));
        }
    }
};
person David Silva Smith    schedule 14.02.2012