Радиокнопка в Radio Group не показывает отмеченный после нажатия на нее - PullRequest
1 голос
/ 18 октября 2011

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

У меня есть приложение-викторина, и я задаю 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));
            }
        });

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

1 Ответ

0 голосов
/ 14 февраля 2012

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

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()));
        }
    }
};
...