У меня странная проблема (странная, потому что она характерна для одного компонента) с applicationComplete в довольно простом приложении. Все компоненты пользовательского интерфейса объявлены в MXML. Я могу получить к ним доступ в applicationComplete, но не в компоненте spark.components.TextArea с именем taStatus здесь; в обработчике он равен нулю.
MXML выглядит примерно так (есть много других компонентов, но ничего особенного)
<s:Application xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" minWidth="710" minHeight="640" applicationComplete="onApplicationComplete(event)" width="710" height="640">
<mx:TabNavigator left="15" right="15" top="15" bottom="340" paddingTop="0">
<s:NavigatorContent label="General" width="100%" height="100%">
<s:Label x="93" y="71" text="Label" id="lblTest"/>
</s:NavigatorContent>
<s:NavigatorContent label="Status" width="100%" height="100%">
<s:TextArea id="taStatus" width="100%" height="100%" text="Startup." editable="false"/>
</s:NavigatorContent>
</mx:TabNavigator>
<fx:Script source="main.as" />
</s:Application>
Вот обработчик в main.as
protected function onApplicationComplete(event: FlexEvent) : void
{
lblTest.text = 'abc789'; // OK
taStatus.text = 'abc789'; // Fail
}
TypeError: ошибка № 1009: невозможно получить доступ к свойству или методу ссылки на нулевой объект. Итак, taStatus имеет значение null ... Что такого особенного в этом TextArea?
Обновление 12-06-2010, 02:53 Перемещение NavigatorContent (вкладки) над всеми другими вкладками внезапно приводит к своевременному созданию экземпляров TextAreas. Очень странно, потому что все компоненты однозначно создаются; Я их вижу.