【发布时间】:2012-10-03 04:49:21
【问题描述】:
我有一个包含两个对象的 flex 应用程序:一个父窗口小部件(称为 IBaseWidget)和一个子窗口小部件(称为 HelperWidget2)。当用户单击帮助链接时,帮助程序小部件被加载到基本小部件列表中,然后显示给用户。
但是,当我尝试通过将集合中的基本小部件转换为子小部件类型来访问此子小部件时,子小部件返回 null 并且我无法使用该小部件。
以下sn-p正确返回新添加的widget的widget ID,并调度事件加载widget:
var id:Number = WidgetManager.getInstance().getWidgetId("Helper");
ViewerContainer.dispatchEvent(new AppEvent(AppEvent.WIDGET_RUN, id, openQuickQueryCanvas));
加载小部件后,名为 openQuickQueryCanvas() 的回调函数会尝试使用辅助小部件执行另一个操作:
private function openQuickQueryCanvas():void{
var id:Number = WidgetManager.getInstance().getWidgetId("Helper");
var bWidget:IBaseWidget = WidgetManager.getInstance().getWidget(id) as IBaseWidget;
var helperWidget:HelperWidget2 = bWidget as HelperWidget2;
if(helperWidget != null){
helperWidget.quickQueryCanvas.dispatchEvent(new MouseEvent(MouseEvent.CLICK));//fire an event to open the quick query canvas
}
}
问题是上面的 helperWidget 总是返回 null,这意味着转换不成功。这对我来说没有意义,因为 bWidget 属于 HelperWidget2 类型。
有什么想法吗?我被难住了……
【问题讨论】:
-
HelperWidget2 是否实现了 IBaseWidget?
-
@sean 当我读完哈哈时,我确实在输入那个确切的问题。 +1 伟大的思想;)
-
感谢大家的建议,请参阅下面的评论。
标签: apache-flex casting null parent