У меня есть RadioButton
в RadioGroup
. Я хочу установить OnClickListener
на этих RadioButton
. В зависимости от того, какой RadioButton
на RadioButton
, я хочу изменить текст EditText
. Как я могу это достичь?
Я бы подумал, что лучше использовать RadioGroup
и настроить слушателя на это, чтобы изменить и обновить View
соответственно (экономит вас, имея 2 или 3 или 4 и т. Д.).
RadioGroup radioGroup = (RadioGroup) findViewById(R.id.yourRadioGroup); radioGroup.setOnCheckedChangeListener(new OnCheckedChangeListener() { @Override public void onCheckedChanged(RadioGroup group, int checkedId) { // checkedId is the RadioButton selected } });
Надеюсь, что это поможет вам…
RadioButton rb = (RadioButton) findViewById(R.id.yourFirstRadioButton); rb.setOnClickListener(first_radio_listener);
а также
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(); } });
Вопрос состоял в том, чтобы определить, на какой щелчок переключателя, так вы можете получить, какую кнопку нажать
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; } } });
Вы также можете добавить слушателя из XML-макета: android:onClick="onRadioButtonClicked"
в android:onClick="onRadioButtonClicked"
<RadioButton/>
.
<RadioButton android:id="@+id/radio_pirates" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pirates" android:onClick="onRadioButtonClicked"/>
Подробнее см. Android-разработчик SDK-Radio Buttons .
На всякий случай кто-то боролся с принятым ответом:
Существуют разные OnCheckedChangeListener-интерфейсы. Сначала я добавил, чтобы проверить, был ли изменен CheckBox.
import android.widget.CompoundButton.OnCheckedChangeListener;
против
import android.widget.RadioGroup.OnCheckedChangeListener;
При добавлении фрагмента из Ricky у меня были ошибки:
Метод setOnCheckedChangeListener (RadioGroup.OnCheckedChangeListener) в типе RadioGroup не применим для аргументов (новый CompoundButton.OnCheckedChangeListener () {})
Может быть исправлено с ответом Али:
new RadioGroup.OnCheckedChangeListener()
Поскольку этот вопрос не является специфичным для Java, я хотел бы добавить, как вы можете это сделать в Котлине :
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 } } })
Здесь radio_group_id
– это назначенный android:id
соответствующей радиогруппы. Чтобы использовать его таким образом, вам нужно будет импортировать kotlinx.android.synthetic.main.your_layout_name.*
В файл Kotlin вашей активности. Также обратите внимание, что в случае, radioGroup
параметр лямбда radioGroup
не используется, его можно заменить на _
(подчеркивание) с Kotlin 1.1.