據說我可以通過任何種類的數據時,推視圖與屏幕navigator.pushView()
方法。我只是簡單地傳遞一個數組,如:空對象引用錯誤與pushView()
var arr:Array=[4,5,6,7,8,9];
navigator.pushView(SecondView,arr);
,並在我的SecondView構造,無論我怎樣嘗試訪問它的數據屬性,我得到一個錯誤:
無法訪問的屬性或方法一個空對象引用。
我這樣做是錯誤的嗎?
據說我可以通過任何種類的數據時,推視圖與屏幕navigator.pushView()
方法。我只是簡單地傳遞一個數組,如:空對象引用錯誤與pushView()
var arr:Array=[4,5,6,7,8,9];
navigator.pushView(SecondView,arr);
,並在我的SecondView構造,無論我怎樣嘗試訪問它的數據屬性,我得到一個錯誤:
無法訪問的屬性或方法一個空對象引用。
我這樣做是錯誤的嗎?
必須調用構造函數才能創建對象的實例。這必須在任何屬性給定值的同時完成。
因此,我總是希望data屬性在構造函數中爲null。
請閱讀Flex Component LifeCycle。步驟1和2是這個問題的要點:
- 您調用組件的構造...
- 可以通過設置其屬性配置組件...
您不得不在構造函數中的某處訪問數據屬性。也許在一個事件監聽器中,比如initialize或creationComplete。也許作爲生命週期方法的一部分,例如updateDisplayList()或commitProperties()。
非常感謝你幫助我兩次!呵呵我曾經想過這可能是構造函數的問題,並且在View中添加了Event.ADDED的EventListener,但是在pushView()方法中這個事件會調度很多次。也許我應該嘗試一些其他事件類型來做到這一點。我想爲你另一件事:我調用PopupManager.addPopUp()在我的一個視圖中顯示一個警告窗口,代碼被執行,但窗口從未出現。但是當我將這些代碼放入根應用程序中時ViewNavigatorApplication),並從我的視圖中調用它,它可以工作。如果我只能以這種方式使用Popup窗口? – gone
@Hubcin沒有審查你的代碼;很難猜測問題可能是什麼。您應該能夠從任何組件創建一個彈出窗口。也許你應該在這個問題上發佈更詳細的問題。 – JeffryHouser
您最終是否在使用SecondViews「data」屬性中的數據做些什麼?從Api文檔中獲得:「數據指定傳遞給視圖的任何數據,該對象被寫入新視圖的View.data屬性中。」 (http://help.adobe.com/en_US/flex/mobileapps/WSa122979b4619725672e48c412a3e152164-7fff.html)因此,如果您在SecondView中的數據屬性的setter中執行某些操作,可能會導致此問題。 –
好吧,除了在pushView()方法中,我沒有對SecondView的數據做任何事情。我有一個commonView(擴展視圖)類,它指定了它自己的寬度和高度屬性等,並確實沒有關於改變它的數據。我的SecondView擴展了commonView,如果它會成爲空數據的原因?如果是這樣,我應該如何訪問在pushView()方法中傳遞給SecondView的數據?謝謝 – gone