Java 在Android中,单选按钮setchecked不能设置为true

Java 在Android中,单选按钮setchecked不能设置为true,java,android,checkbox,radio-button,Java,Android,Checkbox,Radio Button,我正在尝试使用setChecked()创建单选按钮切换 setChecked(false)工作正常,但setChecked(true)不工作 还尝试了toggle(),即使这样也不会取消选中单选按钮 我需要一个不使用无线电组的解决方案。只需一个单选按钮,点击即可切换其状态 MainActivity.java public void radioCheck(View v) { System.out.println("radioCheck"); RadioButton rb = (Ra

我正在尝试使用setChecked()创建单选按钮切换

setChecked(false)工作正常,但setChecked(true)不工作

还尝试了toggle(),即使这样也不会取消选中单选按钮

我需要一个不使用无线电组的解决方案。只需一个单选按钮,点击即可切换其状态

MainActivity.java

public void radioCheck(View v) {
    System.out.println("radioCheck");
    RadioButton rb = (RadioButton) findViewById(R.id.radioButton1);

//rb.toggle();

    if (rb.isChecked() == true) {
        rb.setChecked(false);
    }
    else {
        rb.setChecked(true);
    }
}
public class MainActivity extends Activity {

    private RadioButton radioButton1;
    private Button button2;

    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);

        radioButton1 = (RadioButton) findViewById(R.id.radioButton1);
        button2 = (RadioButton) findViewById(R.id.button2);
    }

    public void radioCheck(View v) {
        if (radioButton1.isChecked()) {
            radioButton1.setChecked(false);
        }
        else {
            radioButton1.setChecked(true);
        }
    }

}
活动\u main.xml

<RadioButton
    android:id="@+id/radioButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button1"
    android:layout_centerHorizontal="true"
    android:onClick="radioCheck"
    android:text="Set me" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/radioButton1"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="39dp"
    android:onClick="radioCheck"
    android:text="On/ Off" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Set me" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="radioCheck"
        android:layout_marginTop="10dp"
        android:text="On/ Off" />

</LinearLayout>


令人惊讶的是,当使用按钮取消选中单选按钮时,setChecked可以工作,但在单选按钮上设置时,setChecked不起作用。

尝试这种方法,希望这能帮助您解决问题。

如果条件为true或false,那么当您得到isChecked()时,它已经返回true或false,因此不需要使用(=true)检查代码中的错误

活动\u main.xml

<RadioButton
    android:id="@+id/radioButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/button1"
    android:layout_centerHorizontal="true"
    android:onClick="radioCheck"
    android:text="Set me" />

<Button
    android:id="@+id/button2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_above="@+id/radioButton1"
    android:layout_centerHorizontal="true"
    android:layout_marginBottom="39dp"
    android:onClick="radioCheck"
    android:text="On/ Off" />
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    android:orientation="vertical"
    android:gravity="center">

    <RadioButton
        android:id="@+id/radioButton1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Set me" />

    <Button
        android:id="@+id/button2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:onClick="radioCheck"
        android:layout_marginTop="10dp"
        android:text="On/ Off" />

</LinearLayout>

您可能导致了无限循环和堆栈溢出。
setChecked
完全不需要,您不需要自己切换。
onClick
用于对新选择做出反应,而不是自己选中/取消选中

发件人:


单击RadioButton上的公共无效(视图){
//按钮现在被选中了吗?
布尔选中=((RadioButton)视图).isChecked();
//检查单击了哪个单选按钮
开关(view.getId()){
案例R.id.radio_海盗:
如果(选中)
//海盗是最好的
打破
案例R.id.radio_忍者:
如果(选中)
//忍者法则
打破
}
}

尝试替换此代码:if(rb.isChecked()){但在单击按钮时调用radioCheck方法,而不是RadioButton,也不仅仅是:rb.setChecked(!((RadioButton)v).isChecked();@hareshchelana这对单选按钮单击不起作用(同样的旧问题仍然存在)。当使用按钮时,应用程序崩溃返回按钮停止响应。谢谢,找到了此问题的解决方案。单选按钮的基本功能是至少应选择其中一个。在我的情况下,我只有一个单选按钮,这就是无法取消选择的原因。此功能只能使用ch实现复选框。