2013-11-21 49 views
0

据说我可以通过任何种类的数据时,推视图与屏幕navigator.pushView()方法。我只是简单地传递一个数组,如:空对象引用错误与pushView()

var arr:Array=[4,5,6,7,8,9]; 
navigator.pushView(SecondView,arr); 

,并在我的SecondView构造,无论我怎样尝试访问它的数据属性,我得到一个错误:

无法访问的属性或方法一个空对象引用。

我这样做是错误的吗?

+0

您最终是否在使用SecondViews“data”属性中的数据做些什么?从Api文档中获得:“数据指定传递给视图的任何数据,该对象被写入新视图的View.data属性中。” (http://help.adobe.com/en_US/flex/mobileapps/WSa122979b4619725672e48c412a3e152164-7fff.html)因此,如果您在SecondView中的数据属性的setter中执行某些操作,可能会导致此问题。 –

+0

好吧,除了在pushView()方法中,我没有对SecondView的数据做任何事情。我有一个commonView(扩展视图)类,它指定了它自己的宽度和高度属性等,并确实没有关于改变它的数据。我的SecondView扩展了commonView,如果它会成为空数据的原因?如果是这样,我应该如何访问在pushView()方法中传递给SecondView的数据?谢谢 – gone

回答

0

必须调用构造函数才能创建对象的实例。这必须在任何属性给定值的同时完成。

因此,我总是希望data属性在构造函数中为null。

请阅读Flex Component LifeCycle。步骤1和2是这个问题的要点:

  1. 您调用组件的构造...
  2. 可以通过设置其属性配置组件...

您不得不在构造函数中的某处访问数据属性。也许在一个事件监听器中,比如initialize或creationComplete。也许作为生命周期方法的一部分,例如updateDisplayList()或commitProperties()。

+0

非常感谢你帮助我两次!呵呵我曾经想过这可能是构造函数的问题,并且在View中添加了Event.ADDED的EventListener,但是在pushView()方法中这个事件会调度很多次。也许我应该尝试一些其他事件类型来做到这一点。我想为你另一件事:我调用PopupManager.addPopUp()在我的一个视图中显示一个警告窗口,代码被执行,但窗口从未出现。但是当我将这些代码放入根应用程序中时ViewNavigatorApplication),并从我的视图中调用它,它可以工作。如果我只能以这种方式使用Popup窗口? – gone

+0

@Hubcin没有审查你的代码;很难猜测问题可能是什么。您应该能够从任何组件创建一个弹出窗口。也许你应该在这个问题上发布更详细的问题。 – JeffryHouser