У меня странная проблема (странная, потому что она специфична для одного компонента) с 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?
Обновление 2010-06-12 02:53
Перемещение NavigatorContent (вкладка) над всеми другими вкладками внезапно приводит к тому, что TextAreas создается вовремя. Очень странно, потому что все компоненты определенно создаются; Я их вижу.