2012-05-26 10 views
6

Parcel'dan bir nesne oluşturduğumda bir String[] okumayı denediğimde bir NullPointerException alıyorum. İşte benim kodudur:NullPointerException Parcel String okumak için çalışıyor []

@Override 
public void writeToParcel(Parcel out, int flags) { 
    out.writeInt(floors); 
    out.writeStringArray(indoorMaps); 

} 

public static final Parcelable.Creator<Building> CREATOR 
    = new Parcelable.Creator<Building>() { 
    public Building createFromParcel(Parcel in) { 
     return new Building(in); 
    } 

public Building[] newArray(int size) { 
    return new Building[size]; 
} 
}; 

private Building(Parcel in) { 
    floors = in.readInt(); 
    in.readStringArray(indoorMaps); 
} 

Yani indoorMaps benim sınıfının bir nitelik olduğunu ve bir String[] ama NullPointerException olsun. dev's documentation'u kontrol ettim ama orada hiçbir şey yok. this tutorial'u izledim ve orada readStringArray kullanıyorlar.

Herhangi bir öneriniz var mı? Teşekkürler

+0

bunu NullPointerException bu linkte atılır NullPointerException –

+0

atar kodunda vurgulanan çizgi ile stacktrace eklemek misiniz: in.readStringArray (indoorMaps); – marimaf

cevap

12

null dizisini readStringArray numaralı telefonu arayarak veriyorsunuz. Çalışması için indoorMaps'u başlatmanız gerekir. Bunun yerine createStringArray olmasını istiyorsunuz.

+0

haklısın, indoorMaps = new String [floors] ekleyerek; readStringArray önce sorunu giderir. Bunu okuduğumu düşündümStringArray bunu benim için yaptı. Teşekkürler! – marimaf

+0

@marimaf: 'readStringArray' diziyi sizin için ayıramaz çünkü referans argümanı işaret ettiği nesneyi değiştiremez. 'createStringArray' bir referans almaz ve diziyi sizin için oluşturur. –

+0

teşekkürler! Cevabınızı kabul edeceğim – marimaf

İlgili konular