Pregunta

tengo dos RadioButtons dentro de un RadioGroup. Quiero establecer OnClickListener sobre estos RadioButtons. Dependiendo de cuál RadioButton se hace clic, quiero cambiar el texto de un EditText. ¿Cómo puedo conseguir esto?

¿Fue útil?

Solución

Creo que una mejor manera es usar RadioGroup y configure el oyente en esto para cambiar y actualizar el View En consecuencia (le ahorra tener 2 o 3 o 4 oyentes, etc.).

    RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);        
    radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() 
    {
        @Override
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // checkedId is the RadioButton selected
        }
    });

Otros consejos

Espero que esto te ayudará...

RadioButton rb = (RadioButton) findViewById(R.id.yourFirstRadioButton);
rb.setOnClickListener(first_radio_listener);

y

OnClickListener first_radio_listener = new OnClickListener (){
 public void onClick(View v) {
   //Your Implementaions...
 }
};
 radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener()
    {
        public void onCheckedChanged(RadioGroup group, int checkedId) {
            // checkedId is the RadioButton selected
            RadioButton rb=(RadioButton)findViewById(checkedId);
            textViewChoice.setText("You Selected " + rb.getText());
            //Toast.makeText(getApplicationContext(), rb.getText(), Toast.LENGTH_SHORT).show();
        }
    });

La pregunta era sobre Detector En qué botón de radio se hace clic, así es como se puede hacer clic en qué botón se hace clic

final RadioGroup radio = (RadioGroup) dialog.findViewById(R.id.radioGroup1);
        radio.setOnCheckedChangeListener(new OnCheckedChangeListener() {

            @Override
            public void onCheckedChanged(RadioGroup group, int checkedId) {

                View radioButton = radio.findViewById(checkedId);
                int index = radio.indexOfChild(radioButton);

                // Add logic here

                switch (index) {
                case 0: // first button

                    Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show();
                    break;
                case 1: // secondbutton

                    Toast.makeText(getApplicationContext(), "Selected button number " + index, 500).show();
                    break;
                }
            }
        });

También puede agregar el oyente del diseño XML: android:onClick="onRadioButtonClicked" en tus <RadioButton/> etiqueta.

<RadioButton android:id="@+id/radio_pirates"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="@string/pirates"
    android:onClick="onRadioButtonClicked"/>

Ver Desarrollador de Android SDK- Botones de radio para detalles.

En caso de que alguien más estuviera luchando con la respuesta aceptada:

Hay diferentes interfaces OnCheckedChangelistener. Agregué al primero para ver si se cambió una casilla de verificación.

import android.widget.CompoundButton.OnCheckedChangeListener;

VS

import android.widget.RadioGroup.OnCheckedChangeListener;

Al agregar el fragmento de Ricky tuve errores:

El método SetOncheckedChangeListener (Radiogrupo.OncheckedChangeListener) en el tipo Radiogrupo no es aplicable para los argumentos (nuevo CompuiteButton.enCheckedChangeListener () {})

Se puede solucionar con respuesta de Ali:

new RadioGroup.OnCheckedChangeListener()

Dado que esta pregunta no es específica para Java, me gustaría agregar cómo puede hacerlo en Kotlín:

radio_group_id.setOnCheckedChangeListener({ radioGroup, optionId -> {
        when (optionId) {
            R.id.radio_button_1 -> {
                // do something when radio button 1 is selected
            }
            // add more cases here to handle other buttons in the RadioGroup
        }
    }
})

Aquí radio_group_id es el asignado android:id del radiogrupo preocupado. Para usarlo de esta manera necesitaría importar kotlinx.android.synthetic.main.your_layout_name.* En el archivo Kotlin de su actividad. También tenga en cuenta que en caso de que el radioGroup El parámetro lambda no se usa, se puede reemplazar con _ (un bajo) desde Kotlin 1.1.

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);     
    radioGroup.setOnClickListener(v -> {
                        // get selected radio button from radioGroup
                        int selectedId = radioGroup.getCheckedRadioButtonId();
                        // find the radiobutton by returned id
                        radioButton =  findViewById(selectedId);
                        String slectedValue=radioButton.getText()          
        });
Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top