2012-05-26 11 views
6

Parcelからオブジェクトを作成するときにString[]を読み取ろうとしたときにNullPointerExceptionが発生します。ここに私のコードは次のとおりです。NullPointerExceptionが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); 
} 

のでindoorMapsは私のクラスの属性であり、それString[]が、私はNullPointerExceptionが取得します。私はdev's documentationをチェックしましたが、そこには何もありません。 私はthis tutorialに続き、そこにはreadStringArrayが使用されています。

提案がありますか?ありがとう

+0

スローするコードにスタックトレースをハイライト表示してください。NullPointerException –

+0

このリンクでNullPointerExceptionがスローされます。in.readStringArray(indoorMaps); – marimaf

答えて

12

readStringArrayを呼び出すと、Parcelnullの配列になります。それが機能するには、indoorMapsを初期化する必要があります。おそらくcreateStringArrayが代わりに必要です。

+0

あなたは正しいです、indoorMaps = new String [floor];を追加します。 readStringArrayの前に問題が修正されています。私はreadStringArrayが私のためにそれをしたと思った。ありがとう! – marimaf

+0

@marimaf: 'readStringArray'は配列を割り当てることができません。なぜなら、参照引数が指すオブジェクトを変更できないからです。 'createStringArray'は参照を取得せず、配列を作成します。 –

+0

ありがとう!私はあなたの答えを受け入れるよ – marimaf

関連する問題