在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;

相关文章:

  • 2021-07-25
  • 2021-04-05
  • 2022-12-23
  • 2021-07-19
  • 2021-07-09
  • 2021-04-02
  • 2021-11-27
猜你喜欢
  • 2022-01-14
  • 2021-10-01
  • 2022-12-23
  • 2021-12-10
  • 2021-09-05
  • 2022-12-23
  • 2022-01-20
相关资源
相似解决方案