<fx:Script>
<![CDATA[
protected function button1_clickHandler(event:MouseEvent):void
{
if (cbAlwaysOnTop.selected) { // <<<<<< I get the error #1009 here
} else {
}
}
]]>
</fx:Script>
<mx:TabNavigator x="0" y="0" width="100%" height="100%">
<s:NavigatorContent label="Translate" width="100%" height="100%">
<s:Button label="test" click="button1_clickHandler(event)"/>
</s:NavigatorContent>
<s:NavigatorContent label="Settings" width="100%" height="100%">
<s:CheckBox x="10" y="22" label="always on top" selected="true" click="checkbox1_clickHandler(event)" id="cbAlwaysOnTop"/>
</s:NavigatorContent>
</mx:TabNavigator>
当我按下按钮时,我收到错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
我做错了什么?
如果我先切换到第二个标签页然后返回并按下按钮,它就会起作用。
答案 0 :(得分:0)
您可能处于错误的上下文中,并且没有cbAlwaysOnTop
的引用。
您的按钮在哪里?您在哪里有处理代码?
编辑:啊,你的评论在底部,我想我知道发生了什么,似乎NavigatorContent只是在你导航时创建它的内容,所以如果你试图在没有先打开标签的情况下访问CheckBox,它尚未创建并抛出空引用错误。
由于我猜你希望设置保持不变,解决方案是创建一个PresentationModel类并绑定CheckBox值,这样你就可以在会话之间保存它并在不依赖UI元素的情况下进行检索。阅读这篇精彩的文章,了解您需要做什么:http://riarockstars.com/2011/03/16/presentation-model-and-multiple-screens-part-1/
答案 1 :(得分:0)
好的,我找到了一个简单的解决方案:
creationPolicy="all"
在:
中使用它<mx:TabNavigator id="x1" x="0" y="0" width="100%" height="100%" creationPolicy="all">
可以解决问题。