2012-05-26 14 views
6

Ricevo una NullPointerException quando sto cercando di leggere un String[] quando creo un oggetto da Parcel. Ecco il mio codice:NullPointerException tenta di leggere Parcel String []

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

Così indoorMaps è un attributo della mia classe, e un String[], ma ho l'NullPointerException. Ho controllato lo dev's documentation ma non c'è niente lì. Ho seguito this tutorial e stanno utilizzando readStringArray lì.

Qualche suggerimento? Grazie

+0

Potrebbe aggiungere lo stacktrace con la riga evidenziata nel codice in cui viene generata NullPointerException –

+0

In questo collegamento viene generata NullPointerException: in.readStringArray (indoorMaps); – marimaf

risposta

12

Si sta dando Parcel un array null quando si chiama readStringArray. Affinché funzioni, è necessario inizializzare indoorMaps. Probabilmente preferisci lo createStringArray.

+0

hai ragione, aggiungendo indoorMaps = new String [floors]; prima di readStringArray risolve il problema. Pensavo che readStringArray l'avesse fatto per me. Grazie! – marimaf

+0

@marimaf: 'readStringArray' non può allocare la matrice per te, dal momento che non può cambiare l'oggetto a cui punta l'argomento di riferimento. 'createStringArray' non prende un riferimento e crea l'array per te. –

+0

grazie! Accetterò la tua risposta – marimaf

Problemi correlati