如何在Android的RadioButton上设置OnClickListener?

RadioGroup有两个RadioButton 。 我想在这些RadioButton上设置OnClickListener 。 根据单击哪个RadioButtonbutton,我想更改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(); } }); 

问题是关于检测哪个单选button被点击,这是如何得到哪个button被点击

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

您还可以在<RadioButton/>标记中添加来自XML布局的侦听器: android:onClick="onRadioButtonClicked"

 <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-单选button 。

以防万一其他人被接受的答案困扰着:

有不同的OnCheckedChangeListener接口。 我添加到第一个看看CheckBox是否被改变。

 import android.widget.CompoundButton.OnCheckedChangeListener; 

VS

 import android.widget.RadioGroup.OnCheckedChangeListener; 

当添加从瑞奇片段我有错误:

RadioGroup类中的setOnCheckedChangeListener(RadioGroup.OnCheckedChangeListener)方法不适用于参数(new CompoundButton.OnCheckedChangeListener(){})

可以用阿里回答来解决:

 new RadioGroup.OnCheckedChangeListener() 

由于这个问题不是特定于Java的,所以我想补充一下如何在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 } } }) 

这里radio_group_id是相关RadioGroup的分配的android:id 。 要以这种方式使用它,您需要在您的活动的Kotlin文件中导入kotlinx.android.synthetic.main.your_layout_name.* 。 另请注意,如果radioGroup lambda参数未使用,则可以使用_ (下划线)replace自Kotlin 1.1以来的参数。