Android: RadioGroup – Cómo configurar el detector de eventos

Desde mi entendimiento, para determinar si se hace clic en una casilla de verificación y encontrar si está marcada o no, se puede usar código como el siguiente:

cb=(CheckBox)findViewById(R.id.chkBox1); cb.setOnCheckedChangeListener(this); public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if (isChecked) { cb.setText("This checkbox is: checked"); } else { cb.setText("This checkbox is: unchecked"); } } 

Sin embargo, soy incapaz de resolver la lógica sobre cómo hacer lo anterior para un radiogrupo.

Aquí está el xml para mi RadioGroup:

 <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content"> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/radio1" android:checked="true" android:text="RadioButton1"> </RadioButton> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/radio2" android:text="RadioButton2" android:checked="true"> </RadioButton> <RadioButton android:layout_width="wrap_content" android:layout_height="wrap_content" android:id="@+id/radio3" android:text="RadioButton3"> </RadioButton> </RadioGroup> 

Pregunta: ¿Necesito configurar otro oyente, o el oyente ya existe también "registrar" este grupo?

¿También, debe el oyente ser fijado en el RadioGroup o el RadioButton?

4 Solutions collect form web for “Android: RadioGroup – Cómo configurar el detector de eventos”

Así es como se obtiene el radiobutton marcado:

 // This will get the radiogroup RadioGroup rGroup = (RadioGroup)findViewById(r.id.radioGroup1); // This will get the radiobutton in the radiogroup that is checked RadioButton checkedRadioButton = (RadioButton)rGroup.findViewById(rGroup.getCheckedRadioButtonId()); 

Para usar el oyente, haz esto:

 // This overrides the radiogroup onCheckListener rGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { // This will get the radiobutton that has changed in its check state RadioButton checkedRadioButton = (RadioButton)group.findViewById(checkedId); // This puts the value (true/false) into the variable boolean isChecked = checkedRadioButton.isChecked(); // If the radiobutton that has changed in check state is now checked... if (isChecked) { // Changes the textview's text to "Checked: example radiobutton text" tv.setText("Checked:" + checkedRadioButton.getText()); } } }); 

Debe ser algo como esto.

 RadioGroup rb = (RadioGroup) findViewById(R.id.radioGroup1); rb.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { switch (checkedId) { } } }); 

Basado en el checkedId, usted sabría cuál del radiobutton se ha chascado y después utiliza su código antedicho para figurar hacia fuera si está comprobado o unchecked. Esto es tarea. 😉

 //Within the Activity that hosts this layout, the following method handles the click event for both radio buttons: public void onRadioButtonClicked(View view) { // Is the button now checked? boolean checked = ((RadioButton) view).isChecked(); // Check which radio button was clicked switch(view.getId()) { case R.id.radio_pirates: if (checked) // Pirates are the best break; case R.id.radio_ninjas: if (checked) // Ninjas rule break; } } 

Utilizar Switch es mejor:

 radGrp.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup arg0, int id) { switch (id) { case -1: Log.v(TAG, "Choices cleared!"); break; case R.id.chRBtn: Log.v(TAG, "Chose Chicken"); break; case R.id.fishRBtn: Log.v(TAG, "Chose Fish"); break; case R.id.stkRBtn: Log.v(TAG, "Chose Steak"); break; default: Log.v(TAG, "Huh?"); break; } } }); 
FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.