studio radiogroup radiobutton enable disable agrupar android listener radio-group android-radiogroup android-radiobutton

radiobutton - Android: RadioGroup-Cómo configurar el escucha de eventos



radiobutton android checked (4)

Así es como obtienes el botón de radio verificado:

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

Según tengo entendido, para determinar si se "hace clic" en una casilla de verificación y ver si está marcada o no, se puede usar un 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, no puedo descifrar la lógica sobre cómo hacer lo anterior para un grupo de radio.

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 que ya está allí también "registrará" este grupo?

Además, ¿el oyente debe estar configurado en RadioGroup o RadioButton?


Debería 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) { } } });

En función de checkedId, sabrá en cuál de los botones de radio se ha hecho clic y luego usará el código anterior para determinar si está marcada o no. Esto es tarea. ;)


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


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