在我的主应用程序中,我有一个包含3个子视图的视图堆栈。在视图堆栈更改处理程序中,我以编程方式更改selectedchild属性。
我知道每次更改selectedChild属性时都不会调用视图的initialize方法。所以我也尝试以编程方式调用init方法..
view1.mxml
<fx:Script>
<![CDATA[
public function init():void{
//something
}
]]>
</fx:Script>
main.mxml
viewStack.selectedChild = viewStack.getChildByName("viewname") as NavigatorContent;
var v1:view1 = new view1();
v1.init();
但是我得到一个空指针错误。我错过了什么吗? 任何帮助,将不胜感激。我是初学者。
答案 0 :(得分:0)
在main.mxml应用程序中,您正在创建view1组件的新实例,您需要的是执行viewstack的当前实例的init()方法。
你为什么不尝试这样做:
var view:View1 = viewStack.getChildByName(“viewname”)。getChildByName(“yourComponentId”)为View1;
view.init();
其中yourComponentId是Viewstack中navigatorContent内的组件。
无论如何你不应该这样做,至少不是这样。
问候!
加布里埃尔.-
答案 1 :(得分:0)
我用过
FlexGlobals.topLevelApplication.[viewId].init();
它有效!!