我有一個UI組件,出於各種原因,我必須以編程方式構建。該組件是一個按列分組的單選按鈕表。如何以編程方式將RadioButton與ActionScript3中的RadioButtonGroup相關聯?
現在,我正在構建列組,像這樣:
private function createGroupsForItemList(items: XMLList): void {
for each (var item: XML in items) {
var rbGroup: RadioButtonGroup = new RadioButtonGroup();
groups[[email protected]()] = rbGroup;
}
}
我想給RadioButton
實例與列組像這樣聯想:
private function createValueControl(item: XML): UIComponent {
var control: RadioButton = new RadioButton();
control.label = "";
control.group = groups[[email protected]()];
control.addEventListener(Event.SELECT, updateSelection);
return control;
}
我可以看到在調試器中,控件與組關聯:
control.group == groups[[email protected]()]
但是,我同樣可以看到,組不知道的任何控制:
group.radioButtons.length == 0
我想,這是因爲在RadioButton
group
二傳手是一個愚蠢的制定者;它所做的只是複製到變量中,而不會執行groupName
所具有的魔力。但是,我似乎無法找到我應該用來正確設置RadioButton.groupName
屬性的值。
因此,簡而言之,我很難理解如何讓這些位彼此交談。我該怎麼做呢?
- 編輯 -
事實證明,我可以有簡單地通過設置groupName屬性創建相關的羣體,但我不能在集團成立一個遴選聽者獲得;該組在設置過程之後立即爲NULL,這意味着下面的第二行將拋出NPE的Flex等效物:
control.groupName = groupNameForLevel(item);
control.group.addEventListener(Event.SELECT, updateSelection);
也許一個control.validateNow()將在這裏幫助。 – 2009-07-27 20:27:11