Android onCheckedChanged для радиогруппы

Я пишу Activity в андроиде, где у меня есть две радиокнопки под RadioGroup. Один из них проверяется по умолчанию. Но я не могу инициировать событие в методе onCreate, чтобы я мог что-то сделать в этом. При нажатии кнопки onCheckedChanged работает нормально.

RadioGroup ItemtypeGroup = (RadioGroup) findViewById(R.id.rechargeItemtype);
    RadioButton providerRadio = (RadioButton) findViewById(R.id.a);
    providerRadio.performClick();

    ItemtypeGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() {

        @Override
        public void onCheckedChanged (RadioGroup group,int checkedId){

            Log.d("chk", "id" + checkedId);

            if (checkedId == R.id.a) {
                //some code
            } else if (checkedId == R.id.b) {
                //some code
            }
        }
    });

Ответы

Ответ 1

Чтобы запустить радиоуправление по умолчанию при инициализации. Установите все, чтобы не отмечать метод clearCheck, затем установите обработчик, затем установите значение по умолчанию, и ваш обработчик начнет стрелять.

itemtypeGroup.clearCheck();

то же, что и обычный, добавить слушателя...

itemtypeGroup
        .setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
Log.d("chk", "id" + checkedId);

                if (checkedId == R.id.a) {
                    //some code
                } else if (checkedId == R.id.b) {
                    //some code
                }

            }

        });

Затем установите переключатель по умолчанию, и ваш слушатель будет стрелять.

rb = (RadioButton) view.findViewById(R.id.a);
rb.setChecked(true);

Удача

Ответ 2

 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {

            if (checkedId == R.id.radioButton1) {
             //do work when radioButton1 is active

            } else  if (checkedId == R.id.radioButton2) {
             //do work when radioButton2 is active
          }

        }
    });

эта работа для меня. надежды полезно

Ответ 3

Попробуйте этот код.

Объявите этот код в методе onCreate.

    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radiogroup);
    radioGroup.clearCheck();
    radioGroup.setOnCheckedChangeListener(new  RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {

            RadioButton rb = (RadioButton) group.findViewById(checkedId);
            if (null != rb && checkedId > -1) {

                // checkedId is the RadioButton selected
                switch (checkedId) {
                    case R.id.one:
                     // Do Something
                      break;

                    case R.id.two:
                    // Do Something
                      break;   

                    case R.id.three:
                    // Do Something   
                        break;
                }
            }
        }

    });

Надеюсь, что это поможет.

Ответ 4

Проблема заключается в том, что вы устанавливаете OnCheckedChangeListener на RadioGroup после вызова метода providerRadio.performClick(); .

Поэтому, когда метод providerRadio.performClick(); выполняется до тех пор, для их вызова нет OnCheckedChangeListener. Поэтому, чтобы заставить его работать, вам нужно установить Listener перед вызовом метода performClick().

Вместо использования RadioButton.performClick() вы должны использовать метод RadioGroup.check() для изменения текущего отмеченного RadioButton.

Таким образом, вы можете использовать этот код для изменения текущего выбора RadioGroup

RadioGroup ItemtypeGroup = (RadioGroup) findViewById(R.id.rechargeItemtype);
ItemtypeGroup
        .setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {
                Log.d("chk", "id" + checkedId);

                if (checkedId == R.id.a) {
                    //some code
                } else if (checkedId == R.id.b) {
                    //some code
                }

            }

        });
ItemtypeGroup.check(R.id.a);

Примечание: - Обязательно вызовите RadioGroup.check() метод после добавления OnCheckedChangeListener , как указано выше в фрагменте кода.

Ответ 5

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