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