0

我目前在运行时在第 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 期间导致此错误的原因,请提供帮助。

4

1 回答 1

0

如上所述:

这是不存在的leftList。ResultFill 方法可能在创建 leftList 之前被调用。leftList 确实为空。因为我的 HGroup 位于不同的视图堆栈中(尽管是相同的 .mxml 文件),所以在我选择查看相应的视图堆栈之前它不存在。

于 2015-11-27T18:11:46.580 回答