TypeError: Error #1009: Cannot access a property oder eine Methode eines null-objektverweises
Bekomme ich diese Fehlermeldung wenn ich die Anwendung starten(flash-Typ mit entlassen alle und weiterhin) und ich bin aus Ideen heraus:
TypeError: Error #1009: Cannot access
eine Eigenschaft oder eine Methode eines null-Objekts
Referenz. bei
Magazin/xmlService_resultHandler()[D:\Documents
und Einstellungen\chechu\Adobe Flash
Builder 4\Magazin\src\Magazin.mxml:41]
bei
Magazin/__xmlService_Ergebnis()[D:\Documents
und Einstellungen\chechu\Adobe Flash
Builder 4\Magazin\src\Magazin.mxml:64]
bei
flash.events::EventDispatcher/dispatchEventFunction()
bei
flash.events::EventDispatcher/dispatchEvent()
bei
HTTPOperation/http://www.adobe.com/2006/flex/mx/internal::dispatchRpcEvent()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\http\HTTPService.als:989]
bei
mx.rpc::AbstractInvoker/http://www.adobe.com/2006/flex/mx/internal::resultHandler()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\AbstractInvoker.als:318]
bei
mx.rpc::Responder/Ergebnis()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\Responder.as:56]
bei
mx.rpc::AsyncRequest-Klasse/acknowledge()[E:\dev\4.x\frameworks\projects\rpc\src\mx\rpc\AsyncRequest.as:84]
bei
DirectHTTPMessageResponder/completeHandler()[E:\dev\4.x\frameworks\projects\rpc\src\mx\messaging\channels\DirectHTTPChannel.as:446]
bei
flash.events::EventDispatcher/dispatchEventFunction()
bei
flash.events::EventDispatcher/dispatchEvent()
bei flash.net::URLLoader/onComplete()
Die Haupt-Anwendung:
import events.ProductEvent;
import mx.collections.ArrayCollection;
import mx.controls.Alert;
import mx.events.FlexEvent;
import mx.rpc.events.FaultEvent;
import mx.rpc.events.ResultEvent;
import valueObject.ImageClass;
[Bindable]
public var imagesCollection:ArrayCollection;
protected function xmlService_faultHandler(event:FaultEvent):void
{
Alert.show("meeah");
}
protected function xmlService_resultHandler(event:ResultEvent):void
{
var imageCollection:ArrayCollection=event.result.Images.image ;
var imData:ImageClass;
for each(var im:Object in imageCollection)
{
imData=new ImageClass();
imData.url=im.url;
imData.big_url=im.big_url;
imData.cat=im.cat;
imData.descript=im.descript;
imData.price=im.price;
imagesCollection.addItem(imData); line:41
}
Alert.show("gg");
}
[Bindable]
public var mama:ArrayCollection=new ArrayCollection();
protected function gallery1_addToCartHandler(event:ProductEvent):void
{
mama.addItem(event);
currentState="cart";
}
]]>
</fx:Script>
<s:states>
<s:State name="normal"/>
<s:State name="cart"/>
</s:states>
<fx:Declarations>
<s:HTTPService id="xmlService" line 64
url="dataXml/pics.xml" fault="xmlService_faultHandler(event)"
result="xmlService_resultHandler(event)"/>
</fx:Declarations>
<components:Gallery imagesArray="{imagesCollection}" addToCart="gallery1_addToCartHandler(event)" />
<components:cart x="500" y="300" itemRenderer="components.CartRenderer" dataProvider="{mama}" />
</s:Application>
Die Galerie Komponente:
<?xml version="1.0" encoding="utf-8"?>
<s:Group xmlns:fx="http://ns.adobe.com/mxml/2009"
xmlns:s="library://ns.adobe.com/flex/spark"
xmlns:mx="library://ns.adobe.com/flex/mx" >
<fx:Declarations>
<!-- Place non-visual elements (e.g., services, value objects) here -->
</fx:Declarations>
<fx:Metadata>
[Event(name="addToCart",type="events.ProductEvent")]
</fx:Metadata>
<s:layout>
<s:VerticalLayout/>
</s:layout>
<fx:Script>
<![CDATA[
import events.ProductEvent;
import mx.collections.ArrayCollection;
import valueObject.ImageClass;
[Bindable]
public var imagesArray:ArrayCollection;
public function goa_clickHandler(event:MouseEvent):void
{
for (var i:uint=0; i<imagesArray.length;i++)
{
var objEvent:ProductEvent=new ProductEvent("addToCart",true);
objEvent.imData=imagesArray[i] ;
dispatchEvent(objEvent);
}
}
]]>
</fx:Script>
<s:SkinnableDataContainer id="cont" dataProvider="{imagesArray}">
<s:itemRenderer >
<fx:Component>
<s:ItemRenderer>
<s:HGroup>
<s:Label id="gagal" text="{data.price}"/>
<mx:Image source="{data.url}" width="50" height="50" />
<s:Button id="goa" label="buy" click="outerDocument.goa_clickHandler(event)"/>
</s:HGroup>
</s:ItemRenderer>
</fx:Component>
</s:itemRenderer>
</s:SkinnableDataContainer>
</s:Group>
Den ProductEvent Klasse:
package events
{
import flash.events.Event;
import valueObject.ImageClass;
[Bindable]
public class ProductEvent extends Event
{
public var imData:ImageClass;
public function ProductEvent(type:String,bubbles:Boolean=true)
{
super(type,bubbles);
}
override public function clone():Event
{
var eventOb:ProductEvent=new ProductEvent(type,bubbles);
eventOb.imData=this.imData;
return eventOb;
}
}
Den ImageClass:
package valueObject
{
[Bindable]
public class ImageClass
{
public var url:String;
public var big_url:String;
public var descript:String;
public var price:String;
public var cat:String;
public function ImageClass()
{
/*this.url=url;
this.big_url=big_url;
this.descript=descript;
this.price=price;
this.cat=cat;*/
}
}
}
und das xml:
<?xml version="1.0"?>
<Images>
<image>
<url>poze/pics/IMG_1163.jpg</url>
<big_url>poze/big_pics/IMG_1163.jpg </big_url>
<descript>P</descript>
<price>99.99</price>
<cat>A</cat>
</image>
<image>
<url>poze/pics/IMG_1175.jpg</url>
<big_url>poze/big_pics/IMG_1175.jpg</big_url>
<descript>U</descript>
<price>99.99</price>
<cat>A</cat>
</image>
<image>
<url>poze/pics/IMG_1186.jpg</url>
<big_url>poze/big_pics/IMG_1186.jpg</big_url>
<descript>L</descript>
<price>99.99</price>
<cat>A</cat>
</image>
- Was waren Ihre Ideen, die durch die Art und Weise ?
Du musst angemeldet sein, um einen Kommentar abzugeben.
Greifen Sie auf
imagesCollection
variable in Zeile 41, aber noch nicht initialisiert, es enthält immer nochnull
Entweder ändern
Zu
oder fügen Sie
den Anfang
xmlService_resultHandler
Methode.Erinnern...
Immer, wenn es eine null-Verweis-Fehler, dann müssen Sie zum initialisieren der Variablen, die Sie verwenden.
Sagen, wenn Sie mit
Array
oderArrayCollection
yourArrayVarriable = new Array();
innerhalb der Funktion oderyourArrayCollectionVarriable = new ArrayCollection();
innerhalb der Funktionund dann starten Sie mit
yourArrayVarriable
oderyourArrayCollectionVarriable
um die Werte zu speichern