如何在Android的RadioButton上设置OnClickListener?
RadioGroup
有两个RadioButton
。 我想在这些RadioButton
上设置OnClickListener
。 根据单击哪个RadioButton
button,我想更改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以来的参数。
- 如何限制我的EditTextinput数值(可能是小数和有符号)input?
- 如何在Android 4.2中更改Action Bar的选项菜单的背景颜色?
- ScrollView内的Google Maps API v2 SupportMapFragment – 用户不能垂直滚动地图
- 从assets / www目录访问文件
- 我应该添加到SVN的文件在使用Android Studio的项目中忽略
- Android:在Activity生命周期中何时调用onCreateOptionsMenu?
- 由于其构buildpath不完整,该项目未build成
- 在Android中从ViewPager中移除碎片页面
- Android应用内结算:保护应用公钥