您的位置:首页 > 其它

Flex:Module里包含TabNavigator时,卸载再加载时出现错误

2010-09-15 22:17 260 查看
在Module里包含TabNavigator时,卸载再加载会出现错误,这是因为Module的共享代码问题,当Moduel中使用Managers(如PopUpManager、DragManager,HistoryManager)时,容易出现这个问题,Manager的方法都是静态方法,整个应用程序中创建了一个该Manager接口的单列Singleton,但Module仅在自己的Application domain中使用该Singleton,当多个Moduel使用同一个Singleton且Mian Application没有使用是,就会出现这个空对象引用的问题:首先引入某Manager的Module不能将该Manager接口的Singleton跟其他Module共享,其他Module调用该Manager的方法时,应用程序不会再创建该Manager接口的实例,这个Module就无法引用到该Manager接口的实例,就出现了空对象引用问题。

默认情况下,Accordion和TabNavigator的 historyManagementEnabled =true;而ViewStack的historyManagementEnabled = false; 所以使用TabNavigator和Accordion时要注意HistoryManager的共享代码问题。另,仅一个Module使用HistoryManager时,卸载之后又加载该Module也会出现该问题,说明第二次加载时相当于一个新的module了。

解决方法:

在Main Application 中引入相关Manager,可以通过在Main Application中申明Manager的引用即可,如:
import mx.managers.HistoryManager;
var historyManager:HistoryManager;
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐