setoncheckedchangelistener oncheckedchangelistener android radio-button radio-group

oncheckedchangelistener - Android onCheckedChanged para radiogrupo



checkbox listener android (5)

Estoy escribiendo una Activity en Android donde tengo dos botones de radio debajo de un Grupo de Radio. Uno de ellos está marcado de forma predeterminada. Pero no puedo activar el evento en el método onCreate para que pueda hacer algo en eso. El onCheckedChanged se ejecuta bien cuando se hace clic en.

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


Para activar una casilla de verificación de radio para el valor predeterminado al inicializar. Configura todo para que no esté marcado con el método clearCheck, luego configura el controlador, luego configura el valor predeterminado y tu controlador se activará.

itemtypeGroup.clearCheck();

entonces igual que de costumbre agregar un oyente ...

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

A continuación, compruebe el botón de opción predeterminado y su oyente disparará.

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

Buena suerte


Prueba este Código.

Declara este código en tu método 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; } } } });

Espero que esto ayude.


Supongo que está haciendo clic antes de configurar la escucha en el grupo, por eso no se activa el evento.


El problema es porque estás configurando OnCheckedChangeListener en RadioGroup después del providerRadio.performClick(); método de llamada .

Es por eso que cuando providerRadio.performClick(); el método se ejecuta hasta que no hay OnCheckedChangeListener disponible para llamar. Por lo tanto, para que funcione, debe configurar el servicio de escucha antes de la llamada para performClick() método performClick() .

Y en lugar de utilizar RadioButton.performClick() , debe usar el método RadioGroup.check() para cambiar el RadioButton verificado actualmente.

Así que puedes usar este código para cambiar la selección actual de 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);

Nota : - Asegúrese de llamar al método RadioGroup.check() después de agregar OnCheckedChangeListener como se OnCheckedChangeListener arriba en el fragmento de código.


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 } else if (checkedId == R.id.radioButton3) { //do work when radioButton3 is active } } });

este trabajo para mi la esperanza es útil