Android obteniendo valor del botón de radio seleccionado

Tengo un pedazo de código con tres RadioButton s dentro de un RadioGroup . Quiero establecer un onCheckedListener que mostrará el valor del RadioButton en un Toas t sin embargo lo que he conseguido hasta ahora no está funcionando. ¿Cómo puedo obtener el valor del RadioButton y mostrarlo en un Toast ? Gracias de antemano, este es mi código:

 package com.example.toohelps; import android.os.Bundle; import android.app.Activity; import android.view.Menu; import android.view.View; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.RadioGroup.OnCheckedChangeListener; import android.widget.Toast; public class MainActivity extends Activity { RadioGroup rg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup1); final String value = ((RadioButton)findViewById(rg.getCheckedRadioButtonId())) .getText().toString(); rg.setOnCheckedChangeListener(new OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { Toast.makeText(getBaseContext(), value, Toast.LENGTH_SHORT).show(); } }); } } 

Archivo XML:

 <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" xmlns:tools="http://schemas.android.com/tools" android:layout_width="match_parent" android:layout_height="match_parent" android:paddingBottom="@dimen/activity_vertical_margin" android:paddingLeft="@dimen/activity_horizontal_margin" android:paddingRight="@dimen/activity_horizontal_margin" android:paddingTop="@dimen/activity_vertical_margin" tools:context=".MainActivity" > <RadioGroup android:id="@+id/radioGroup1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:layout_alignParentTop="true" android:layout_centerHorizontal="true" android:layout_marginTop="152dp" > <RadioButton android:id="@+id/radio0" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Choose 1" /> <RadioButton android:id="@+id/radio1" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Choose 2" /> <RadioButton android:id="@+id/radio2" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="Choose 3" /> </RadioGroup> </RelativeLayout> 

9 Solutions collect form web for “Android obteniendo valor del botón de radio seleccionado”

Probado y funcionando. Compruebe esto

 import android.app.Activity; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; import android.widget.RadioButton; import android.widget.RadioGroup; import android.widget.Toast; public class MyAndroidAppActivity extends Activity { private RadioGroup radioGroup; private RadioButton radioButton; private Button btnDisplay; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); addListenerOnButton(); } public void addListenerOnButton() { radioGroup = (RadioGroup) findViewById(R.id.radio); btnDisplay = (Button) findViewById(R.id.btnDisplay); btnDisplay.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // get selected radio button from radioGroup int selectedId = radioGroup.getCheckedRadioButtonId(); // find the radiobutton by returned id radioButton = (RadioButton) findViewById(selectedId); Toast.makeText(MyAndroidAppActivity.this, radioButton.getText(), Toast.LENGTH_SHORT).show(); } }); } } 

Xml

 <RadioGroup android:id="@+id/radio" android:layout_width="wrap_content" android:layout_height="wrap_content" > <RadioButton android:id="@+id/radioMale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_male" android:checked="true" /> <RadioButton android:id="@+id/radioFemale" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/radio_female" /> </RadioGroup> 

En caso de que, si desea hacer algún trabajo en la selección de uno de los botones de radio (sin tener ningún botón de OK adicional o algo), su código es muy bien, poco actualizado.

 public class MainActivity extends Activity { RadioGroup rg; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main); RadioGroup rg = (RadioGroup) findViewById(R.id.radioGroup1); rg.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { public void onCheckedChanged(RadioGroup group, int checkedId) { switch(checkedId){ case R.id.radio0: // do operations specific to this selection break; case R.id.radio1: // do operations specific to this selection break; case R.id.radio2: // do operations specific to this selection break; } } }); } } 
 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { radioButton = (RadioButton) findViewById(checkedId); Toast.makeText(getBaseContext(), radioButton.getText(), Toast.LENGTH_SHORT).show(); } } ); 

Sólo use la función getCheckedRadioButtonId () para determinar si hay algo marcado, si -1 es return, puede evitar que aparezca toast

Para cualquier persona que se está poblando de forma programática y busca obtener un índice, puede notar que el checkedId cambia a medida que vuelve a la actividad / fragmento y vuelve a agregar los botones de opción. Una forma de desplazarse es establecer una etiqueta con el índice:

  for(int i = 0; i < myNames.length; i++) { rB = new RadioButton(getContext()); rB.setText(myNames[i]); rB.setTag(i); myRadioGroup.addView(rB,i); } 

Entonces en su oyente:

  myRadioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton radioButton = (RadioButton) group.findViewById(checkedId); int mySelectedIndex = (int) radioButton.getTag(); } }); 
 int genid=gender.getCheckedRadioButtonId(); RadioButton radioButton = (RadioButton) findViewById(genid); String gender=radioButton.getText().toString(); 

Espero que esto funcione. Puede convertir su salida a cadena de la manera anterior. gender.getCheckedRadioButtonId(); – El género es el id de RadioGroup.

Muchas gracias a Chris.

Esta es mi solución:

 RadioGroup radgroup_opcionesEventos = null; private static String[] arrayEventos = { "Congestión", "Derrumbe", "Accidente" }; @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_maps); radgroup_opcionesEventos = (RadioGroup)findViewById(R.id.rg_opciones_evento); int i=0;//a.new.ln for(String evento : arrayEventos) { //RadioButton nuevoRadio = crearRadioButton(evento);//a.old.ln RadioButton nuevoRadio = crearRadioButton(evento,i);//a.new.ln radgroup_opcionesEventos.addView(nuevoRadio,i); } RadioButton primerRadio = (RadioButton) radgroup_opcionesEventos.getChildAt(0); primerRadio.setChecked(true); } private RadioButton crearRadioButton(String evento, int n) { //RadioButton nuevoRadio = new RadioButton(this);//a.old.ln RadioButton nuevoRadio = new RadioButton(getApplicationContext());//a.new.ln LinearLayout.LayoutParams params = new RadioGroup.LayoutParams( RadioGroup.LayoutParams.WRAP_CONTENT, RadioGroup.LayoutParams.WRAP_CONTENT); nuevoRadio.setLayoutParams(params); nuevoRadio.setText(evento); nuevoRadio.setTag(evento); return nuevoRadio; } @Override protected void onResume() { radgroup_opcionesEventos.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { RadioButton radioButton = (RadioButton) group.findViewById(checkedId); //int mySelectedIndex = (int) radioButton.getTag(); String mySelectedIndex = radioButton.getTag().toString(); } }); super.onResume(); } 
 Radiogroup rgteam; String team; rgteam.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) { RadioButton rb= (RadioButton) findViewById(checkedId); team = rb.getText().toString(); } }); 

También he tenido problemas para obtener los ID de los botones de radio cuando los RadioButtons se generan dinámicamente. No parece funcionar si intenta establecer manualmente la ID utilizando RadioButton.setId() . Lo que funcionó para mí fue utilizar View.getChildAt() y View.getParent() para iterar a través de los botones de opción y determinar cuál fue comprobado. Todo lo que necesitas es primero obtener el RadioGroup a través de findViewById(R.id.myRadioGroup) y luego iterar a través de sus hijos. Usted sabrá a medida que iterar a través del botón que está en, y usted puede simplemente utilizar RadioButton.isChecked() para determinar si ese es el botón que se comprobó.

  • ¿Qué es el carácter 0x1f?
  • Android - Personalizar el cuadro de diálogo con un diseño Xml
  • Configuración de eclipse para quejarse de cadenas codificadas duras para las preferencias de Android xml
  • ¿Por qué no se muestra mi aplicación en Google Play? Ahora publicado
  • Existe un archivo XML Layout de Android Studio pero no lo encuentro
  • Cómo agregar sombra alrededor de imagen circular
  • ¿Hay algo similar a los Drawables de Android en iOS?
  • Android: Utilizar matriz de color en XML
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.