[英]How to set radio button checked as default in radiogroup?
我已經動態創建了RadioGroup
和RadioButton
,如下所示:
RadioGroup radioGroup = new RadioGroup(context);
RadioButton radioBtn1 = new RadioButton(context);
RadioButton radioBtn2 = new RadioButton(context);
RadioButton radioBtn3 = new RadioButton(context);
radioBtn1.setText("Less");
radioBtn2.setText("Normal");
radioBtn3.setText("More");
radioBtn2.setChecked(true);
radioGroup.addView(radioBtn1);
radioGroup.addView(radioBtn2);
radioGroup.addView(radioBtn3);
這里步驟radioBtn2.setChecked(true);
導致radioBtn2
始終被檢查。 這意味着我無法通過檢查其他兩個單選按鈕( radioBtn1
, radioBtn3
)取消選中radioBtn2
。 我想讓RadioGroup
只能檢查一個單選按鈕(現在它可以一次檢查兩個單選按鈕)。
我怎么解決這個問題?
你應該像這樣檢查radiogroup中的radiobutton:
radiogroup.check(IdOfYourButton)
當然,您首先必須為您的單選按鈕設置ID
編輯:我忘了, radioButton.getId()
適用, radioButton.getId()
EDIT2:
android:checkedButton="@+id/my_radiobtn"
適用於radiogroup xml
如果是xml屬性,則使用android:checkedButton
,它將檢查RadioButton
的id
。
<RadioGroup
...
...
android:checkedButton="@+id/IdOfTheRadioButtonInsideThatTobeChecked"
... >....</RadioGroup>
在XML文件中設置您的RadioGroup
的android:checkedButton
字段,其id為您的默認RadioButton
:
<RadioGroup
....
android:checkedButton="@+id/button_1">
<RadioButton
android:id="@+id/button_1"
...../>
<RadioButton
android:id="@+id/button_2"
...../>
<RadioButton
android:id="@+id/button_3"
...../>
</RadioGroup>
RadioGroup radioGroup = new RadioGroup(WvActivity.this);
RadioButton radioBtn1 = new RadioButton(this);
RadioButton radioBtn2 = new RadioButton(this);
RadioButton radioBtn3 = new RadioButton(this);
radioBtn1.setText("Less");
radioBtn2.setText("Normal");
radioBtn3.setText("More");
radioGroup.addView(radioBtn1);
radioGroup.addView(radioBtn2);
radioGroup.addView(radioBtn3);
radioGroup.check(radioBtn2.getId());
RadioGroup radioGroup = new RadioGroup(context);
RadioButton radioBtn1 = new RadioButton(context);
RadioButton radioBtn2 = new RadioButton(context);
RadioButton radioBtn3 = new RadioButton(context);
radioBtn1.setText("Less");
radioBtn2.setText("Normal");
radioBtn3.setText("More");
radioGroup.addView(radioBtn1);
radioGroup.addView(radioBtn2);
radioGroup.addView(radioBtn3);
radioBtn2.setChecked(true);
我的同事代碼中存在同樣的問題。 這聽起來就像您的收音機組沒有正確設置您的收音機按鈕。 這就是您可以多選單選按鈕的原因。 我嘗試了很多東西,最后我做了一個實際上錯誤的技巧,但工作正常。
for ( int i = 0 ; i < myCount ; i++ )
{
if ( i != k )
{
System.out.println ( "i = " + i );
radio1[i].setChecked(false);
}
}
在這里,我設置了一個for循環,它檢查可用的單選按鈕,並取消選擇除新單擊的按鈕之外的每個按鈕。 試試吧。
在activity.xml中添加android:checked = "true"
這是RadioGroup的一個錯誤
RadioButton radioBtn2 = new RadioButton(context);
radioBtn2沒有viewId,而generateViewId在onChildViewAdded()
public void onChildViewAdded(View parent, View child) {
if (parent == RadioGroup.this && child instanceof RadioButton) {
int id = child.getId();
// generates an id if it's missing
if (id == View.NO_ID) {
id = View.generateViewId();
child.setId(id);
}
((RadioButton) child).setOnCheckedChangeWidgetListener(
mChildOnCheckedChangeListener);
}
if (mOnHierarchyChangeListener != null) {
mOnHierarchyChangeListener.onChildViewAdded(parent, child);
}
}
所以,首先是radioGroup.addView(radioBtn2),然后是radioBtn2.setChecked(true);
像這樣:
RadioGroup radioGroup = new RadioGroup(context);
RadioButton radioBtn1 = new RadioButton(context);
RadioButton radioBtn2 = new RadioButton(context);
RadioButton radioBtn3 = new RadioButton(context);
radioBtn1.setText("Less");
radioBtn2.setText("Normal");
radioBtn3.setText("More");
radioGroup.addView(radioBtn1);
radioGroup.addView(radioBtn2);
radioGroup.addView(radioBtn3);
radioBtn2.setChecked(true);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.