Android RadioGroup getCheckedRadioButtonId()

Posted

技术标签:

【中文标题】Android RadioGroup getCheckedRadioButtonId()【英文标题】: 【发布时间】:2016-01-20 13:20:48 【问题描述】:

我正在尝试检查单选按钮是否在单选组内被选中。显然我可以选择一次检查每一个,但根据 android 开发者参考网站,public int getCheckedRadioButtonId () 是 radiogroup 的公共方法,它在空选时返回 -1。所以这是我的代码

if(radioGroup.getCheckedRadioButtonId() == -1)
        Toast.makeText(getApplicationContext(),"Please make a selection",Toast.LENGTH_SHORT);
        return;
    
 <RadioGroup
        android:layout_
        android:layout_
        android:id="@+id/radioGroup"
        android:layout_below="@id/loanPurposeTV">

        <RadioButton
            android:id="@+id/radioButton"
            android:layout_
            android:layout_
            android:layout_alignParentLeft="true"
            android:layout_alignParentStart="true"
            android:layout_alignParentTop="true"
            android:text="Personal"
            android:checked="false" />

        <RadioButton
            android:id="@+id/radioButton2"
            android:layout_
            android:layout_
            android:layout_alignParentTop="true"
            android:layout_toEndOf="@+id/radioButton"
            android:layout_toRightOf="@+id/radioButton"
            android:text="Bussiness" />

        <RadioButton
            android:id="@+id/radioButton3"
            android:layout_
            android:layout_
            android:layout_alignBottom="@+id/radioButton2"
            android:layout_toEndOf="@+id/radioButton2"
            android:layout_toRightOf="@+id/radioButton2"
            android:text="Option Three" />

        <RadioButton
            android:id="@+id/radioButton4"
            android:layout_
            android:layout_
            android:layout_alignParentTop="true"
            android:layout_toEndOf="@+id/radioButton3"
            android:layout_toRightOf="@+id/radioButton3"
            android:text="Option Four" />

        <RadioButton
            android:id="@+id/radioButton5"
            android:layout_
            android:layout_
            android:layout_alignParentTop="true"
            android:layout_toEndOf="@+id/radioButton4"
            android:layout_toRightOf="@+id/radioButton4"
            android:text="Other" />
    </RadioGroup>

但它没有按预期工作。有谁知道为什么它不起作用或实现我的想法的更简单的方法

【问题讨论】:

具体是什么不起作用?它总是-1吗? “但它没有按预期工作”——请解释您的确切症状。还请说明您是如何设置RadioButtonsRadioGroup @ElliotM 如果我没有选择单选组中的任何单选按钮,则 toast 应该显示该消息不起作用。 我们需要查看您设置广播组的代码。 @ElliotM i jst 用 xml 代码更新了我的问题 【参考方案1】:

首先,您在调用 Toast 时忘记了“.show()”。

就个人而言,我遇到了同样的问题(它总是返回-1,即使选择了单选按钮),尽管有答案证明它有效,like this one

您可以尝试它们,但老实说,当我读到这篇文章时,我尝试了所有方法,但从未成功。可能是我遇到这个问题的时候太着急了。

否则,一个非常简单的解决方法是在布局加载时设置一个默认单选按钮,因此,您确定会有一个单选按钮被选中(并且在验证之前不再需要检查)

或者您可以创建一个初始化为 false 的 bool var,一旦选择任何单选按钮(使用 OnCheckChangeListener)就会设置为 true。

【讨论】:

有时你只是想太多以至于你最终忽略了很少的事情,谢谢伙计。没有意识到我没有展示吐司。 我理解@KBJ,它甚至发生在最好的情况下:) 在使用onCheckChangeListener时,你能得到带有id的单选按钮的字符串吗?或者我必须这样做。

以上是关于Android RadioGroup getCheckedRadioButtonId()的主要内容,如果未能解决你的问题,请参考以下文章

android的radiogroup为啥选择两个

android如何实现代码控制RadioGroup中某一个按钮选中

android如何实现代码控制RadioGroup中某一个按钮选中

Android RadioGroup和RadioButton详解

RadioGroup

Android——RadioGroup和CheckBox