My goal is to change the visibility of a component from another component which is in another state. I been reading about the event but I can Flex it to work, I get this TypeError: Error # 1009: Can not access a property or method of a null object reference.
<<fx:Script>
<![CDATA[
import mx.controls.Alert;
import mx.events.FlexEvent;
protected function buttonChange_clickHandler(event:MouseEvent):void
{
Tab.selectedIndex=1;
border.visible=true;
border.setStyle("backgroundColor",'#8000FF');
}
]]>
</fx:Script>
<mx:TabNavigator x="197.7" y="147.35" width="514" id="Tab" height="335">
<s:NavigatorContent label="State 1" width="100%" height="100%">
<s:Button x="65" y="103" id="buttonChange" label="Change state" click="buttonChange_clickHandler(event)" />
</s:NavigatorContent>
<s:NavigatorContent label="State2" id="state2" width="100%" height="100%">
<s:BorderContainer x="191" y="37" width="249" height="223" visible="false" cornerRadius="20" borderWeight="5" id="border">
</s:BorderContainer>
</s:NavigatorContent>
</mx:TabNavigator>
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
The error occurs because your BorderContainer is not “created” when the tab navigator change the index. There are two fast ways to resolve that:
1) Use callLater to ensure that the border will be created when the tab change:
2) Or set the creationPolicy to “all” of the second
</s:NavigatorContent>. That way will increase the startup time of the application: