В настоящее время я получаю сообщение об ошибке в строке 148 во время выполнения:Adobe Air: почему этот DataProvider создает ошибку?
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, программа проверит, что массив обр является не null с if (arr! = null), поэтому я на 100% уверен, что arr не является нулевым.
Содержание обр от SQLite:
arr = sqls.getResult().data;
Есть несколько объектов в базе данных, и я вижу, что я могу получить содержимое из базы данных просто отлично. В самом деле, до линии 148, я проверил содержимое внутри аранжировки:
var tree:TreeClass_Full = arr[0];
В отладчике, я проверил объект дерева выше, и я вижу, что все переменные из базы данных SQLite передаются в дерево объект правильно. Фактически, я также проверил arr [1], arr [2] и т. Д., И я вижу, что объекты получили правильные данные.
На мой взгляд, sqlite и все, что не похоже на проблему, но когда я добавляю этот Array arr в дерево var: 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, пожалуйста, помогите.
Нет скрытых процессов. Это 'leftList', которого не существует. Метод 'ResultFill', вероятно, вызывается до создания' leftList'. – RIAstar
...... Я в шоке. O_O Я вижу ... Да, leftList действительно null. Поскольку мой HGroup находится в другом представлении (хотя тот же .mxml-файл), он не существует, пока я не захочу просмотреть соответствующий viewstack. Теперь, возможно ли иметь leftList, не переходя к соответствующему представлению? – Karl
Возможно, но это не лучший подход, особенно в мобильном проекте. Вы просто устанавливаете dataProvider всякий раз, когда компонент создается. Самый простой способ сделать это - привязка. – RIAstar