我有一个主应用程序调用几个 ViewStack 状态,每个状态都有弹出窗口。如果我不打开任何弹出窗口,我可以在状态之间移动。如果我打开一个弹出窗口,然后尝试使用currentState=...
我收到错误来更改状态:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at spark.components::Scroller/focusInHandler()[E:\dev\4.y\frameworks\projects\spark\src\spark\components\Scroller.as:2139]
at flash.display::Stage/set focus()
at mx.core::UIComponent/setFocus() [E:\dev\4.y\frameworks\projects\framework\src\mx\core\UIComponent.as:9905]
...
我看到其他人也有同样的问题,例如这里:
http://forums.adobe.com/thread/1031531
http://forums.adobe.com/message/2767130
http://forums.adobe.com/message/3448443
http://forums.adobe.com/thread/655749?tstart=-1
http://forums.adobe.com/thread/801149
http://flex4examples.wordpress.com/2011/05/05/skinnabletextbase-focusmanager-runtime-error-popup/
但我还没有弄清楚如何实施推荐的解决方案。听起来我应该只包括:
import mx.managers.PopUpManager; PopUpManager;
在我的主应用程序中,它应该可以工作,但对我不起作用。
我的应用程序在不同的文件中具有每个视图状态,每个视图状态都使用<views:View>
. 此外,所有弹出窗口都是单独的文件,定义为<s:TitleWindow>
. 每个文件都包含这一行:
import mx.managers.PopUpManager;
我想知道这是否意味着每个文件都使用不同的弹出管理器(?),当它是一个单例并且整个应用程序应该只使用一个时(如何设置它?)。
我用来调用弹出窗口的代码是:
var _popupName:MyTitleWindowFileName = MyTitleWindowFileName(
PopUpManager.createPopUp(this, MyTitleWindowFileName, true));
_popupName.addEventListener(MyAppController.CLOSE_POPUP,onClosePopUp);
PopUpManager.centerPopUp(_popupName); // call popup
请注意,当主应用程序(定义为 的应用程序<s:Application>
)运行时,ViewStack 状态尚未加载(因为它们在第一次使用时被加载)。不确定这是否有任何因果关系。
我尝试在此处的“将数据传入和传出 Spark 弹出窗口”部分中遵循 Adobe 的示例代码:
任何想法都非常感谢。