2013-02-07 191 views
2

我很新的Android和我有一個這樣的XML:所有單選按鈕得到一個單選按鈕組下選擇,安卓

<RadioGroup 
     android:id="@+id/cardRadioGroup" 
     android:layout_width="wrap_content" 
     android:layout_height="45dp" android:layout_alignParentLeft="true" android:layout_marginLeft="35dp" 
     android:layout_alignTop="@+id/cardEditText"> 
</RadioGroup> 

我tyring使用我的代碼來生成膨脹此xml儘可能多的單選按鈕取決於我的數據模型。

我使用的代碼是(這是內部的for循環):

 LayoutInflater inflater = this.getLayoutInflater(); 
     View currentView = inflater.inflate(R.layout.card_payment_content_node,null); 

     RadioGroup rg = (RadioGroup) currentView.findViewById(R.id.cardRadioGroup); 
     RadioButton rb = new RadioButton(this); 
     //set radiobutton properties 
     rb.setText(entry.getKey()); 
     rb.setId(++radioButtonIdCounter); 

     rg.addView(rb); 

     //add to view 
     parent.addView(currentView); 

這是工作正常。但問題是,我可以在設備上一次選擇多個單選按鈕。

我不知道爲什麼會發生這種情況。我犯了什麼錯誤?

在此先感謝。

+0

你在哪裏添加新創建的單選按鈕到收音機組? –

+0

我沒有添加。我如何添加這些? Android不知道'cardRadioButton'是否在名爲'cardRadioGroup'的'RadioGroup'中? – sriram

+0

@siriam您如何期望能夠在XML中動態添加GUI元素?需要特殊的循環標籤才能爲結果對象提供單獨的屬性。可以使用XSLT,但Android不會將XSLT應用於您的佈局描述。 YOu可以手動做到這一點,但是如我在我的回答中所述,以編程方式添加按鈕更有效。 –

回答

7

所有的按鈕都有相同的ID。這就是爲什麼他們如此行事。

您只需佈置一次該佈局。您必須以編程方式添加按鈕,方法是識別cardRadioGroup,然後在代碼中循環,爲所有按鈕生成唯一的ID。

要向該組添加單選按鈕,請使用RadioGroup.addview()

要創建單選按鈕,請使用RadioButton的其中一個構造函數,並根據需要設置其他屬性。

+0

@siriam像你一樣在你的XML中仍然有一個單選按鈕,或者總是添加相同的按鈕。你不能那樣做。從XML中的_no_單選按鈕開始,並通過RadioButton構造函數創建它們的_all。他們需要成爲個人對象。 –

+0

我這樣做了'RadioButton rb = new RadioButton(this)'並將其添加到我的xml中的單選按鈕組中。但同樣的問題所有按鈕被選中! – sriram

+0

@sriram你需要爲它們分配一個不同的ID。我說這是根本問題,請記住? –