我使用可变数量的radioButton创建了RadioGroup
。问题是可以检查许多单选按钮,而RadioButton
中没有单RadioGroup
检查(据我所知)我的错误在哪里?
这是我的代码:
View view = inflater.inflate(R.layout.questionnaire_check_question, null);
RadioGroup radioGroup = (RadioGroup) view.findViewById(R.id.radioGroup);
for (int k = 0; k < answerValues.size(); k++) {
View radioButtonView = inflater.inflate(R.layout.check_radio_button, null);
RadioButton radioButton = (RadioButton) radioButtonView
.findViewById(R.id.radio_button);
radioButton.setText(answerValues.get(k));
radioGroup.addView(radioButtonView);
}
questionBody.addView(view);
questionnaire_check_question.xml
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:background="#A4A7A6" >
<RadioGroup
android:id="@+id/radioGroup"
android:scrollbars="horizontal"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:orientation="horizontal" >
</RadioGroup>
</LinearLayout>
check_radio_button.xml
<?xml version="1.0" encoding="utf-8"?>
<RadioButton xmlns:android="http://schemas.android.com/apk/res/android"
android:id="@+id/radio_button"
android:layout_width="0dp"
android:layout_height="wrap_content"
android:layout_weight="1"
android:layout_marginLeft="5dp"
android:button="@drawable/checkbox"
>
</RadioButton>
抽拉/ checkbox.xml
<?xml version="1.0" encoding="utf-8"?>
<selector xmlns:android="http://schemas.android.com/apk/res/android" >
<item android:drawable="@drawable/icon_checkbox_on" android:state_checked="true"/>
<item android:drawable="@drawable/icon_checkbox_off" android:state_checked="false"/>
</selector>
radioGroup有一个奇怪的功能..如果我检查第一个RadioGroup,然后是第二个,第一个就变成未经检查...在此之后,如果我想再次选择第一个,我不能做这个......不再检查了。 谁能帮我 ?欢迎任何想法! 提前谢谢。
答案 0 :(得分:9)
我找到了解决方案:问题是所有按钮都具有相同的ID。所以我为每个radioButton设置了一个唯一的id。
答案 1 :(得分:-2)
我将举例说明如何完成此操作,然后相应地修改您的代码。 在xml中,要添加单选按钮,您需要定义如下所示的布局 -
<?xml version="1.0" encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
android:orientation="vertical" >
<RadioGroup
android:id="@+id/radioSex"
android:layout_width="wrap_content"
android:layout_height="wrap_content" >
<RadioButton
android:id="@+id/radioMale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_male"
android:checked="true" />
<RadioButton
android:id="@+id/radioFemale"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/radio_female" />
</RadioGroup>
<Button
android:id="@+id/btnDisplay"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/btn_display" />
</LinearLayout>
在Java文件中,执行以下操作: i)声明无线电组和无线电按钮如下 -
private RadioGroup radioSexGroup;
private RadioButton radioSexButton;
private Button btn;
ii)使用xml布局注册您的radiobutton和radiogroup,如下所示 -
radioSexGroup = (RadioGroup) findViewById(R.id.radioSex);
btnDisplay = (Button) findViewById(R.id.btnDisplay);
iii)在下面的按钮上添加onclicklistner -
btn.setOnClickListner(this);
iv)实现OnClickListner接口并覆盖OnClickListner接口的未实现方法
v)在覆盖方法OnClick中,编写以下代码 -
int selectedId = radioSexGroup.getCheckedRadioButtonId();
// find the radiobutton by returned id
radioSexButton = (RadioButton) findViewById(selectedId);
Toast.makeText(MyAndroidAppActivity.this,
radioSexButton.getText(), Toast.LENGTH_SHORT).show();
这就是它的完成方式。希望这会有所帮助。