flex 遍历arraycollection出现的诡异问题

一板砖夯死你 2011-04-28 01:40:31
2个页面
a.mxml b.mxml
1.a页面里使用loadModule加载b页面

a.loadModule(b.url);


2.b页面初始化时调用java方法获得一个arraycolleciton,存放N个vo对象,然后遍历arraycolleciton


for each(vo:Cvo in arraycolleciton){
//do someting;
}




现在的问题是:
第一次load b页面时很正常,但是第二次load b页面时就会报错,错误行是在for each 那,错误信息是类型转换错误,但是断点跟踪进去很明显arraycolleciton里的对象就是Cvo,但是仍然会报错,谁遇到过类似的问题,求解!!!
...全文
363 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
SWQQ- 2011-04-29
  • 打赏
  • 举报
回复
应该是没有问题的,mark下
水中影子 2011-04-28
  • 打赏
  • 举报
回复
在application中加入
private var cvo:Cvo=null就可以了
GameWong 2011-04-28
  • 打赏
  • 举报
回复
留个记号先。方便后来找到这个帖子学习。

分千万不要给我,1分也不要。我只想后来好找这个贴。
一板砖夯死你 2011-04-28
  • 打赏
  • 举报
回复
分依次散给各楼吧。。。
一板砖夯死你 2011-04-28
  • 打赏
  • 举报
回复
解决

网上的答案:
在Flex中使用ModuleLoder来加载或切换多个Module时,常常会出现“TypeError: Error #1034: 强制转换类型失败”的问题。

出现这种错误的原因在于 ModuleLoader shared code problem 当Module中使用managers时(如PopUpManager,DragManager, HistoryManager等)则可能出现这个问题,当application里在loader之前没有引入这些manager的引用时,manager的方法是静态方法,整个应用程序中创建了一个该manager接口的singleton实例,

但module仅在自己的 Application domain中使用该单例, 当多个module使用同一个单例manager且main application没有使用时,就会出现这个空对象引用问题。第一个引入某manager的module不能将该manager接口的 singleton跟其他module共享,其他module调用该Manager的方法时,应用程序不会再创建该manager接口的实例,这个 module就无法引用到该manager接口的实例,就出现了空对象引用问题.

解决方法:在ModuleLoader 的creationComplete方法中加入如下代码:

moduleLoader.applicationDomain = ApplicationDomain.currentDomain;

就可以在Application里切换多个module而不需要在Application里明文引用单例manager声明。
另外,推荐在moduleloader做切换的时候,加上:moduleLoader.unloadModule再做moduleLoader.loadModule()。

4,328

社区成员

发帖
与我相关
我的任务
社区描述
多媒体/设计 Flex
社区管理员
  • Flex
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧