Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/apache-flex/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Apache flex 从一个mxml访问另一个mxml的组件id_Apache Flex - Fatal编程技术网

Apache flex 从一个mxml访问另一个mxml的组件id

Apache flex 从一个mxml访问另一个mxml的组件id,apache-flex,Apache Flex,我有两个mxml文件。一个是主文件,它是应用程序标记mxml文件,另一个是我的mxml组件文件。 我的主mxml中有一个viewstack,其id是,比如说,“mainViewStack”。 现在我想从mxml组件文件中设置“mainViewStack”的selectedChild属性。 但我有一个错误: 错误#1009:无法访问空对象引用的属性或方法。 访问mainObj.mainViewStack.selectedChild.id时,其中mainObj是主mxml文件的对象。 请帮帮我。 谢

我有两个mxml文件。一个是主文件,它是应用程序标记mxml文件,另一个是我的mxml组件文件。 我的主mxml中有一个viewstack,其id是,比如说,“mainViewStack”。 现在我想从mxml组件文件中设置“mainViewStack”的selectedChild属性。 但我有一个错误: 错误#1009:无法访问空对象引用的属性或方法。 访问mainObj.mainViewStack.selectedChild.id时,其中mainObj是主mxml文件的对象。 请帮帮我。
谢谢您。

我猜您正在尝试在创建子项之前访问它。但如果没有代码,这很难说


请尝试等待应用程序上的FlexEvent.CREATION\u COMPLETE事件,以访问所选子级

我猜您正在尝试在创建子项之前访问它。但如果没有代码,这很难说


请尝试等待应用程序上的FlexEvent.CREATION\u COMPLETE事件,以访问所选子级

或者您可以给出“creationPolicy=all”,因为Flex只从viewstack创建第一个可见的子项

或者您可以给出“creationPolicy=all”,因为Flex只从viewstack创建第一个可见的子项

这个问题被称为“延迟实例化”,是Flex组件生命周期的产物。如果你想对这个概念有一个非常透彻的解释,这可能是我读过的最好的解释

实际上,Flex根据需要创建组件。每个组件都有一个生命周期,它将经历以下几个阶段:

  • 建筑
  • 加成
  • 初始化
  • 无效
  • 验证
  • 更新
  • 移除
子组件在经过初始化阶段之前是不可访问的。这是Flex组件将分派其CREATION_COMPLETE事件的时间点,让您(和框架)知道它已准备好进行交互。在此事件之前,您将在尝试访问组件或其子组件时收到null引用错误

默认情况下,ViewStacks通过在调用子组件进行显示之前不初始化子组件来实现这一点。默认情况下,ViewStack的creationPolicy属性设置为“自动”。此属性有多个选项,包括所有选项。但是,请注意,这可能会带来严重的性能问题,因为堆栈中的所有组件都将立即初始化,而不管用户是否实际查看该组件


在您的具体案例中,这不是问题所在。包含视图堆栈的组件尚未完全初始化。您需要在创建完成事件处理程序中设置ViewStack的子级。

此问题称为“延迟实例化”,是Flex组件生命周期的产物。如果你想对这个概念有一个非常透彻的解释,这可能是我读过的最好的解释

实际上,Flex根据需要创建组件。每个组件都有一个生命周期,它将经历以下几个阶段:

  • 建筑
  • 加成
  • 初始化
  • 无效
  • 验证
  • 更新
  • 移除
子组件在经过初始化阶段之前是不可访问的。这是Flex组件将分派其CREATION_COMPLETE事件的时间点,让您(和框架)知道它已准备好进行交互。在此事件之前,您将在尝试访问组件或其子组件时收到null引用错误

默认情况下,ViewStacks通过在调用子组件进行显示之前不初始化子组件来实现这一点。默认情况下,ViewStack的creationPolicy属性设置为“自动”。此属性有多个选项,包括所有选项。但是,请注意,这可能会带来严重的性能问题,因为堆栈中的所有组件都将立即初始化,而不管用户是否实际查看该组件


在您的具体案例中,这不是问题所在。包含视图堆栈的组件尚未完全初始化。您需要在创建完成事件处理程序中设置ViewStack的子级。

您可以在MXML组件中使用此代码从其他MXML组件更改应用程序的ViewStack选定子级。然而,这不是一个好的做法

FlexGlobals.topLevelApplication.mainViewStack.selectedChild=FlexGlobals.topLevelApplication.childId


您可以使用静态事件调度器从一个视图中分派事件,并在另一个视图中侦听该事件

您可以在MXML组件中使用此代码,从其他MXML组件更改应用程序的ViewStack选定子项。然而,这不是一个好的做法

FlexGlobals.topLevelApplication.mainViewStack.selectedChild=FlexGlobals.topLevelApplication.childId


您可以使用静态事件调度器从一个视图中分派事件,并在另一个视图中侦听该事件

发布一些代码可能会有所帮助。找出mainObj,看看你得到了什么。另外,你是否为viewstack的所有子组件提供了组件id?发布一些代码可能会有所帮助。找出mainObj,看看你得到了什么。另外,你是否为viewstack的所有子组件提供了组件id?