2012-05-26 9 views
6

Obtengo una NullPointerException cuando intento leer de nuevo String[] cuando creo un objeto desde Parcel. Aquí está mi código:NullPointerException tratando de leer 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); 
} 

Así indoorMaps es un atributo de mi clase, y un String[], pero me da la NullPointerException. He marcado el dev's documentation pero no hay nada allí. Seguí this tutorial y están usando readStringArray allí.

¿Alguna sugerencia? Gracias

+0

Podría agregar stacktrace con línea resaltada en el código donde arroja NullPointerException –

+0

La NullPointerException se lanza en este enlace: in.readStringArray (indoorMaps); – marimaf

Respuesta

12

Usted está dando Parcel una matriz null al llamar al readStringArray. Para que funcione, debe inicializar indoorMaps. Probablemente desee createStringArray en su lugar.

+0

tienes razón, al agregar interiorMaps = new String [floors]; antes de readStringArray soluciona el problema. Pensé que readStringArray hizo eso por mí. ¡Gracias! – marimaf

+0

@marimaf: 'readStringArray' no puede asignar la matriz, ya que no puede cambiar el objeto al que apunta el argumento de referencia. 'createStringArray' no toma una referencia, y crea la matriz para usted. –

+0

gracias! Aceptaré tu respuesta – marimaf

Cuestiones relacionadas