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
Я предполагаю, что вы выполняете клик перед установкой прослушивателя в группу, поэтому событие не запускается.