2012-03-07 245 views
2

我对actionscript3/flashbuilder非常新,我试图做一些简单的事情,比如将值从一个视图传递到另一个视图。将值从一个视图传递到另一个视图

我计算出我所有的语法错误,但我仍然得到一个NULL错误

(TypeError: Error #1009: Cannot access a property or method of a null object reference)

...即使我在测试的值硬编码。

我有2个视图,当我按下一个按钮时,它应该将值传递给另一个视图,然后在标签中显示传递的值。

这里是我的2次:

厂景:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="view1"> 
    <fx:Script> 
     <![CDATA[ 
     var value1:int = 1; 
     var value2:int = 2; 
     ]]> 
    </fx:Script> 
    <s:Button id="btn1" x="5" y="10" width="25" label="Button 1" click="navigator.pushView(view2, {val:value1})"/> 
    <s:Button id="btn2" x="15" y="100" width="25" label="Button 2" click="navigator.pushView(view2, {val:value2})"/> 
</s:View> 

视图2:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
    xmlns:s="library://ns.adobe.com/flex/spark" title="view2"> 
<fx:Declarations> 
    <!-- Place non-visual elements (e.g., services, value objects) here --> 

</fx:Declarations> 
<fx:Script> 
    <![CDATA[ 
     var passedValue:int = data.val; 
    ]]> 
</fx:Script> 
    <s:Label x="75" y="100" width="200" text="{passedValue}" /> 

任何帮助,将不胜感激!

谢谢!

回答

5

你的问题是你想在视图完成创建之前访问数据对象。

添加creationComplete处理函数,以您的观点:

<s:View xmlns:fx="http://ns.adobe.com/mxml/2009" 
xmlns:s="library://ns.adobe.com/flex/spark" title="view2" creatonComplete="init(event)"> 

而且你的init方法里,你将能够访问数据对象

<fx:Script> 
<![CDATA[ 
    [Bindable] private var passedValue:int; 
    protected function init(e:FlexEvent):void{ 
     passedValue = data.val; 
    } 
]]> 
</fx:Script> 

另外,请注意我说[绑定]到您的passedValue var。 这是因为你打算将它的价值绑定到你的标签上。为了这个工作,你需要使用[Bindable]你的变种

+0

伟大的建议...我将上述添加到我的项目。但是它不能识别init函数中的e:FlexEvent。它说类型没有找到....谢谢! – SkyeBoniwell 2012-03-08 14:04:42

+0

没关系...我需要添加'import mx.events.FlexEvent;' – SkyeBoniwell 2012-03-08 14:32:08

相关问题