Frage

ich habe zwei RadioButtons in a RadioGroup. Ich möchte setzen OnClickListener auf diesen RadioButtons. Je nachdem, welches RadioButton wird geklickt, ich möchte den Text von einem ändern EditText. Wie kann ich das erreichen?

War es hilfreich?

Lösung

Ich würde denken, ein besserer Weg zu verwenden ist zu verwenden RadioGroup und stellen Sie den Hörer darauf ein, um das zu ändern und zu aktualisieren View Dementsprechend (rettet Sie mit 2 oder 3 oder 4 usw. Zuhörern).

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

Andere Tipps

Hoffe das wird dir helfen ...

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

und

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

Die Frage ging um Erkennung Auf welches Optionsfeld wird geklickt? Auf diese Weise können Sie auf diese Schaltfläche klicken?

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

Sie können auch Hörer aus dem XML -Layout hinzufügen: android:onClick="onRadioButtonClicked" in deiner <RadioButton/> Schild.

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

Sehen Android-Entwickler SDK-Optionsknöpfe für Details.

Nur für den Fall, dass jemand anderes mit der akzeptierten Antwort kämpfte:

Es gibt verschiedene On-CheckedChangelistener-Interfaces. Ich fügte zuerst hinzu, um zu sehen, ob ein Kontrollkästchen geändert wurde.

import android.widget.CompoundButton.OnCheckedChangeListener;

vs

import android.widget.RadioGroup.OnCheckedChangeListener;

Beim Hinzufügen des Ausschnitts von Ricky hatte ich Fehler:

Die Methode setonCheckedChangelistener (radioGroup.onCheckedChangelistener) im Typ RadioGroup ist nicht für die Argumente anwendbar (New Compoundbutton.onCheckedChangelistener () {})

Kann mit Antwort von Ali repariert werden:

new RadioGroup.OnCheckedChangeListener()

Da diese Frage nicht spezifisch für Java ist, möchte ich hinzufügen, wie Sie es tun können Kotlin:

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

Hier radio_group_id ist das zugewiesen android:id der betroffenen RadioGroup. Um es so zu verwenden, müssten Sie importieren kotlinx.android.synthetic.main.your_layout_name.* in der Kotlin -Datei Ihrer Aktivität. Beachten Sie auch, dass für den Fall die radioGroup Der Lambda -Parameter ist nicht genutzt, er kann durch ersetzt werden _ (ein Unterstrich) Seit 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()          
        });
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top