Ich habe zwei RadioButtons in einem RadioGroup. Ich möchte OnClickListenerauf diese RadioButtons setzen. Je nachdem, auf was RadioButtongeklickt wird, möchte ich den Text eines ändern EditText. Wie kann ich das erreichen?
Ich habe zwei RadioButtons in einem RadioGroup. Ich möchte OnClickListenerauf diese RadioButtons setzen. Je nachdem, auf was RadioButtongeklickt wird, möchte ich den Text eines ändern EditText. Wie kann ich das erreichen?
Antworten:
Ich denke, ein besserer Weg ist es RadioGroup, den Listener zu verwenden und einzustellen, um ihn Viewentsprechend zu ändern und zu aktualisieren (erspart Ihnen 2 oder 3 oder 4 usw. Listener).
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup);
radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener()
{
@Override
public void onCheckedChanged(RadioGroup group, int checkedId) {
// checkedId is the RadioButton selected
}
});
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();
}
});
groupwird benötigt in RadioButton rb=(RadioButton)group.findViewById(checkedId);
Die Frage betraf das Erkennen, auf welches Optionsfeld geklickt wird. Auf diese Weise können Sie ermitteln, auf welches Optionsfeld geklickt wird
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 einen Listener aus dem XML-Layout hinzufügen: android:onClick="onRadioButtonClicked"in Ihrem <RadioButton/>Tag.
<RadioButton android:id="@+id/radio_pirates"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/pirates"
android:onClick="onRadioButtonClicked"/>
Weitere Informationen finden Sie unter SDK-Optionsfelder für Android-Entwickler .
Nur für den Fall, dass jemand anderes mit der akzeptierten Antwort zu kämpfen hatte:
Es gibt verschiedene OnCheckedChangeListener-Schnittstellen. Ich habe zum ersten hinzugefügt, um zu sehen, ob eine CheckBox geändert wurde.
import android.widget.CompoundButton.OnCheckedChangeListener;
vs.
import android.widget.RadioGroup.OnCheckedChangeListener;
Beim Hinzufügen des Snippets von Ricky hatte ich folgende Fehler:
Die Methode setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) vom Typ RadioGroup gilt nicht für die Argumente (new CompoundButton.OnCheckedChangeListener () {})
Kann mit der Antwort von Ali behoben werden:
new RadioGroup.OnCheckedChangeListener()
Da diese Frage nicht spezifisch für Java ist, möchte ich hinzufügen, wie Sie dies in Kotlin tun können :
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_idist die Zuordnung android:idder betreffenden RadioGroup. Um es auf diese Weise zu verwenden, müssten Sie kotlinx.android.synthetic.main.your_layout_name.*in die Kotlin-Datei Ihrer Aktivität importieren . Beachten Sie auch, dass der radioGroupLambda-Parameter , falls er nicht verwendet wird, _seit Kotlin 1.1 durch (einen Unterstrich) ersetzt werden kann .
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()
});
Für Kotlin Hier wird der Lambda-Ausdruck hinzugefügt und der Code optimiert.
radioGroup.setOnCheckedChangeListener { radioGroup, optionId ->
run {
when (optionId) {
R.id.radioButton1 -> {
// do something when radio button 1 is selected
}
R.id.radioButton2 -> {
// do something when radio button 2 is selected
}
// add more cases here to handle other buttons in the your RadioGroup
}
}
}
Hoffe das wird dir helfen. Vielen Dank!