2012-05-14 76 views
0

我使用的Flex SDK 4.6,會出現很奇怪的錯誤,當我嘗試在舞臺上添加火花複選框:Flex移動 - 星火Chechbox錯誤

var cb:CheckBox = new CheckBox(); 
optionsList.addElement(cb); 

TypeError: Error #1009: Cannot access a property or method of a null object reference. at spark.skins.mobile::CheckBoxSkin/drawBackground()[E:\dev\4.y\frameworks\projects\mobiletheme\src\spark\skins\mobile\CheckBoxSkin.as:162] at spark.skins.mobile.supportClasses::MobileSkin/updateDisplayList()[E:\dev\4.y\frameworks\projects\mobiletheme\src\spark\skins\mobile\supportClasses\MobileSkin.as:313] at mx.core::UIComponent/validateDisplayList()[E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:8999] at mx.managers::LayoutManager/validateDisplayList()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:736] at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:819] at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.y\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1180]

當MXML創建那裏chechbox沒有問題,但我需要在AS中創建多個實例,並將它們添加到舞臺上。

任何人有任何線索我做錯了什麼?

+1

請發表更多代碼。什麼是optionsList?我從錯誤中猜測這是一個移動項目?需要更多細節。 – Dom

+1

假設'optionsList'是一個'List'組件:List不是一個容器。你不能只是添加這樣的元素。您必須爲CheckBox分配一個自定義的ItemRenderer。 – RIAstar

+0

我的壞,這裏是MXML代碼: \t \t –

回答

1

我發佈了一個錯誤的概念,這是在評論中,我相信是錯誤的根源。引用:

I checked when I add the checkbox on creationComplete it works, but in my case the checkboxes are added AFTER creationComplete when updateDisplayList is called.

updateDisplayList()在組件的生命週期中可能會被調用很多。每當屏幕上的某些內容需要更新時,就會調用它。在分派creationComplete事件之前至少調用updateDisplayList(),但在某些情況下,對於某些組件,可能會調用更多次。

你分享的代碼有點偏離了上下文,但是因爲它最終會帶來很多複選框;因爲每次updateDisplayList()迭代後都會創建一個新的複選框。我強烈建議您將您的子女創建移動到createChildren()方法而不是updateDisplayList()。

以下是關於Spark Flex Component LifeCycleMX Component LifeCycle的一些文檔。