我目前在运行时在第 148 行遇到错误:
TypeError: Error #1009: Cannot access a property or method of a null object reference.
at PlantDB/ResultFill()[C:\Users\usern\Adobe Flash Builder 4.6\PlantDB\src\SQLiteCode.as:148]
第 148 行的代码是:
leftList.dataProvider = new ArrayCollection(arr);
在来到第 148 行之前,程序已经用 if (arr != null) 检查了数组 arr 不为空,所以我 100% 确定 arr 不为空。
arr 的内容来自 sqlite:
arr = sqls.getResult().data;
数据库中有几个对象,我看到我可以从数据库中获取内容就好了。事实上,在第 148 行之前,我已经通过以下方式检查了 arr 中的内容:
var tree:TreeClass_Full = arr[0];
在调试器中,我检查了上面的树对象,我看到 sqlite 数据库中的所有变量都正确地传输到树对象。事实上,我也检查了 arr[1]、arr[2] 等,并且我看到对象得到了正确的数据。
在我看来,sqlite 和所有这些似乎都不是问题,但是当我将此 Array arr 添加到 var tree:TreeClass_Full = arr[0]; 时,会弹出错误。
我不明白。无法访问空对象引用的属性或方法?导致此错误的 dataProvider 中的隐藏过程是什么?
我的 leftList 在这里:
<s:HGroup width="100%" height="85%" verticalAlign="middle">
<s:List id = "leftList" width = "45%" height = "95%"
dragEnabled="true" dragMoveEnabled="true" dropEnabled="true"
itemRenderer="resultRenderer"/>
<s:List id = "rightList" width = "45%" height = "95%"
dragEnabled="true" dragMoveEnabled="true" dropEnabled="true"
itemRenderer="resultRenderer"/>
</s:HGroup>
我的 itemRenderer (resultRenderer) 是:
<?xml version="1.0" encoding="utf-8"?>
<s:ItemRenderer xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx"
autoDrawBackground="true">
<s:HGroup x="5" y="5" width="350" height="150" horizontalAlign="center" verticalAlign="middle">
<mx:Image id = "resultImage" width="100" height="100"/>
<s:TextArea id="resultTextArea" height="141" editable="false"
text = "{data.Common_Name}"/>
</s:HGroup>
</s:ItemRenderer>
如果有人知道在 dataProvider 期间导致此错误的原因,请提供帮助。