Wie setze ich OnclickListener auf einen Radiobutton in Android?
-
26-10-2019 - |
Frage
ich habe zwei RadioButton
s in a RadioGroup
. Ich möchte setzen OnClickListener
auf diesen RadioButton
s. Je nachdem, welches RadioButton
wird geklickt, ich möchte den Text von einem ändern EditText
. Wie kann ich das erreichen?
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()
});