2012-05-26 16 views
6

Otrzymuję wyjątek NullPointerException, gdy próbuję odczytać String[] podczas tworzenia obiektu z Parcel. Tu jest mój kodu:NullPointerException próbuje odczytać ciąg działki []

@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); 
} 

Więc indoorMaps jest atrybutem mojej klasie, a to String[], ale otrzymuję NullPointerException. Sprawdziłem numer dev's documentation, ale nic tam nie ma. Poszłam za this tutorial i używają tam readStringArray.

Wszelkie sugestie? Dzięki

+0

Czy możesz dodać stacktrace z podświetloną linią w kodzie, w którym zgłasza NullPointerException –

+0

Wywoływany jest wyjątek NullPointerException w tym łączu: in.readStringArray (indoorMaps); – marimaf

Odpowiedz

12

Podajesz Parcel tablicę null dzwoniąc pod numer readStringArray. Aby to działało, musisz zainicjować indoorMaps. Prawdopodobnie potrzebujesz zamiast tego createStringArray.

+0

masz rację, dodając indoorMaps = new String [floors]; przed readStringArray rozwiązuje problem. Myślałem, że readStringArray zrobił to dla mnie. Dzięki! – marimaf

+0

@marimaf: 'readStringArray' nie może przydzielić tablicy dla ciebie, ponieważ nie może zmienić obiektu, na który wskazuje argument referencyjny. 'createStringArray' nie przyjmuje odwołania i tworzy dla ciebie tablicę. –

+0

dzięki! Przyjmuję twoją odpowiedź – marimaf