flex4模块中有DataGrid加载时报错
- Java code
<?xml version="1.0" encoding="utf-8"?><mx:HBox xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" width="100%" height="100%" label="基本信息" backgroundAlpha="0.0" contentBackgroundAlpha="0.0" creationComplete="init()" > <fx:Script> <![CDATA[ import com.whlhy.lhymis.Modules.GoodsDGMD; import mx.collections.ArrayCollection; import mx.controls.Alert; import mx.rpc.events.ResultEvent; public var selectedNode:XML; public var GDGMD:GoodsDGMD; public function init():void{// goods.findAllGoodsFromSD();// goods.addEventListener(ResultEvent.RESULT,goods_result);// module.loadModule("BIV_GoodsDG.swf");// Alert.show("a"); } [color=#FF0000] public function treeChange(e:Event):void{ selectedNode=Tree(e.target).selectedItem as XML; if(selectedNode.@label == "基本信息"){ displayModule("com/whlhy/lhymis/Modules/GoodsDGMD.swf"); }else{ displayModule("com/whlhy/lhymis/Modules/WelcomeMD.swf"); } } private function displayModule(moduleUrl:String):void{ var url:String=module.url; if(url==moduleUrl) return; if(url!=null) module.unloadModule(); module.url=moduleUrl; }[/color] ]]> </fx:Script> <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> <mx:RemoteObject id="goods" destination="goodsService" endpoint="http://localhost:8080/LHYMIS/messagebroker/amf" /> <fx:XMLList id="treeData"> <node label="原料信息"> <node label="基本信息"/> <node label="等待添加"/> <node label="等待添加"/> </node> <node label="自配料信息"> <node label="自配料信息"/> <node label="等待添加"/> <node label="等待添加"/> </node> <node label="菜品信息"> <node label="菜品信息"/> <node label="等待添加"/> </node> <node label="等待添加"/> <node label="等待添加"/> </fx:XMLList> </fx:Declarations> <mx:HDividedBox width="100%" height="100%" backgroundAlpha="0.0" contentBackgroundAlpha="0.0"> <s:BorderContainer width="20%" height="100%" backgroundAlpha="0.51" contentBackgroundAlpha="0.53"> <mx:Tree width="100%" height="100%" contentBackgroundAlpha="0.0" labelField="@label" showRoot="false" dataProvider="{treeData}" change="treeChange(event)"> </mx:Tree> </s:BorderContainer > <s:BorderContainer width="100%" height="100%"> <mx:ModuleLoader id="module" ready="init()" height="100%" width="100%" url="com/whlhy/lhymis/Modules/WelcomeMD.swf" /> </s:BorderContainer> </mx:HDividedBox></mx:HBox>
模块代码
- Java code
<?xml version="1.0" encoding="utf-8"?><mx:Module xmlns:fx="http://ns.adobe.com/mxml/2009" xmlns:s="library://ns.adobe.com/flex/spark" xmlns:mx="library://ns.adobe.com/flex/mx" layout="horizontal" width="100%" height="100%" > <fx:Declarations> <!-- 将非可视元素(例如服务、值对象)放在此处 --> </fx:Declarations> <mx:DataGrid width="100%" height="100%" > <mx:columns> <mx:DataGridColumn headerText="编码" dataField="code" /> <mx:DataGridColumn headerText="名称" dataField="name" /> <mx:DataGridColumn headerText="单位" dataField="unit" /> <mx:DataGridColumn headerText="价格" dataField="price" /> <mx:DataGridColumn headerText="核算单位" dataField="hsunit" /> <mx:DataGridColumn headerText="规格" dataField="spec" /> <mx:DataGridColumn headerText="进料率" dataField="jinliao" /> <mx:DataGridColumn headerText="类型" dataField="goodstypename" /> </mx:columns> </mx:DataGrid></mx:Module>
报错信息如下:
- Java code
TypeError: Error #1009: Cannot access a property or method of a null object reference. at mx.styles::StyleProtoChain$/initProtoChainForUIComponentStyleName()[E:\dev\4.x\frameworks\projects\framework\src\mx\styles\StyleProtoChain.as:356] at mx.styles::StyleProtoChain$/initProtoChain()[E:\dev\4.x\frameworks\projects\framework\src\mx\styles\StyleProtoChain.as:171] at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::initProtoChain()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:10446] at mx.core::UIComponent/regenerateStyleCache()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:10509] at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::addingChild()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:7213] at mx.core::UIComponent/addChild()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:6910] at mx.controls.listClasses::ListBase/createChildren()[E:\dev\4.x\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3775] at mx.controls::DataGrid/createChildren()[E:\dev\4.x\frameworks\projects\framework\src\mx\controls\DataGrid.as:1133] at mx.core::UIComponent/initialize()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:7349] at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:7241] at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::childAdded()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:3972] at mx.core::Container/addChildAt()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:2616] at mx.core::Container/addChild()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:2534] at mx.core::Container/createComponentFromDescriptor()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:4392] at mx.core::Container/createComponentsFromDescriptors()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:4181] at mx.core::Container/createChildren()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:3187] at mx.core::UIComponent/initialize()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:7349] at mx.core::Container/initialize()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:3129] at com.whlhy.lhymis.Modules::GoodsDGMD/initialize() at mx.core::UIComponent/http://www.adobe.com/2006/flex/mx/internal::childAdded()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\UIComponent.as:7241] at mx.core::Container/http://www.adobe.com/2006/flex/mx/internal::childAdded()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:3972] at mx.core::Container/addChildAt()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:2616] at mx.core::Container/addChild()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\Container.as:2534] at mx.modules::ModuleLoader/moduleReadyHandler()[E:\dev\4.x\frameworks\projects\framework\src\mx\modules\ModuleLoader.as:468] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at ModuleInfoProxy/moduleEventHandler()[E:\dev\4.x\frameworks\projects\framework\src\mx\modules\ModuleManager.as:1168] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at ModuleInfo/readyHandler()[E:\dev\4.x\frameworks\projects\framework\src\mx\modules\ModuleManager.as:812] at flash.events::EventDispatcher/dispatchEventFunction() at flash.events::EventDispatcher/dispatchEvent() at mx.core::FlexModuleFactory/update()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:433] at mx.core::FlexModuleFactory/docFrameHandler()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:582] at mx.core::FlexModuleFactory/docFrameListener()[E:\dev\4.x\frameworks\projects\framework\src\mx\core\FlexModuleFactory.as:126]
- Java code
TypeError: Error #1009: Cannot access a property or method of a null object reference. at mx.controls.listClasses::ListBase/updateDisplayList()[E:\dev\4.x\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:4336] at mx.controls.dataGridClasses::DataGridBase/updateDisplayList()[E:\dev\4.x\frameworks\projects\framework\src\mx\controls\dataGridClasses\DataGridBase.as:682] at mx.controls::DataGrid/updateDisplayList()[E:\dev\4.x\frameworks\projects\framework\src\mx\controls\DataGrid.as:1741] at mx.controls.listClasses::ListBase/validateDisplayList()[E:\dev\4.x\frameworks\projects\framework\src\mx\controls\listClasses\ListBase.as:3966] at mx.managers::LayoutManager/validateDisplayList()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:663] at mx.managers::LayoutManager/doPhasedInstantiation()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:718] at mx.managers::LayoutManager/doPhasedInstantiationCallback()[E:\dev\4.x\frameworks\projects\framework\src\mx\managers\LayoutManager.as:1072]
[解决办法]
这么长的代码,看不清楚啊,你跟踪一下代码。
[解决办法]
你的主程序和模块,是分开在两个工程里的吗?
[解决办法]
GoodsDGMD本身有构造函数体么?