这真让我烦恼,但我有一个组件,其中Button包含在BorderContainer中。我在运行时将自定义属性传递给组件以更改按钮的标签,但Flex报告以下错误:
Cannot access a property or method of a null object reference
发生错误时,Flex会突出显示以下代码:
myButton.label = value;
这是应用程序:
// MyApp.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:WindowedApplication xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
xmlns:local="*">
<local:MyComp id="myButton" label="My Button"/>
</s:WindowedApplication>
// MyComp.mxml
<?xml version="1.0" encoding="utf-8"?>
<s:BorderContainer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
width="400" height="300">
<fx:Script>
<![CDATA[
private var _label:String;
public function get label():String
{
return _label;
}
public function set label(value:String):void
{
_label = value;
myButton.label = value;
}
]]>
</fx:Script>
<s:Button id="myButton" label="Test"/>
</s:BorderContainer>
非常感谢任何帮助。提前谢谢。
答案 0 :(得分:0)
如果第一次调用myButton
属性的setter函数,则尚未创建label
对象。将新标签值分配到myButton.label
中的commitProperties()
。
您应该阅读About creating advanced components(最值得注意的是“关于组件实例化生命周期”)以了解原因。