android 如何在 radioButton 上获取 onClick 事件

How to get onClick event on radioButton in android

我正在尝试寻找一种方法来获取单选按钮上的 onClick 事件。我知道有办法像这样获取选定的单选按钮值:

radioButton.setOnCheckedChangeListener(new CompoundButton.OnCheckedChangeListener() {
                            @Override
                            public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

但我有一个要求,当用户 click/select 单选按钮通过触摸屏幕然后执行一些逻辑。因此,在使用这种方式时,当我选择用户先前选择的单选按钮时,radioButton.setOnCheckedChangeListener 正在调用。很难从代码(显示先前的选择时)或用户自己点击屏幕来区分谁在调用 onCheckedChanged 事件。

谁能告诉我如何在 radioButton(not radioGroup)

上找到 onClick 触摸事件

或者,您可以直接在 XML 中设置点击处理程序:

<RadioGroup 
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content">

    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClickHandler" />

    <RadioButton
        android:id="@+id/radioButton2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="onClickHandler" />
</RadioGroup>

然后您的 activity 必须实施 onClick 处理程序:

public class MainActivity extends AppCompatActivity {
    ...

    public void onClickHandler(View view) {
        public void onClick(View view) {
            switch (view.getId()) {
                case R.id.radioButton1:
                    ...
                    break;
                case R.id.radioButton2:
                    ...
                    break;
            }
        }
    }
}

官方文档如下:https://developer.android.com/guide/topics/ui/controls/radiobutton.html

试试这个让单选按钮的点击侦听器

RadioButton radioButton = (RadioButton) findViewById(R.id.yourRadioButton);
radioButton.setOnClickListener(radio_listener);// set listner to your radio button

比使用下面的代码

创建一个新的radio_listener
OnClickListener radio_listener = new OnClickListener (){
 public void onClick(View v) {
   //perform your action here
    if(v==radioButton){
       //perform your action here
    }
 }
};

您可以获得触发检查更改事件的每个视图的 ID,因此在

中获取 ID
 public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) { if(buttonView.getId()==firstButton)

比较 id 并应用进一步的逻辑。

只需像这样在 XML 文件中设置 onClick :

 android:onClick="Button1"

在此之后,在您的 java 文件中:

OnClickListener yourRadiolistener = new OnClickListener (){
   public void onClick(View v) {
       //Do whatever you want to do
   }
};

RadioButton Button1 = (RadioButton) findViewById(R.id.yourFirstRadioButton);
Button1.setOnClickListener(yourRadiolistener);