2012-05-26 45 views
6

當我從Parcel創建對象時,我正在嘗試讀回String[]時,出現NullPointerException。這裏是我的代碼:NullPointerException嘗試讀取包裹字符串[]

@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時給Parcel a null數組。爲了它的工作,你將不得不初始化indoorMaps。您可能需要createStringArray

+0

你是對的,加入indoorMaps = new String [floors];在readStringArray之前它解決了這個問題。我以爲readStringArray是爲我做的。謝謝! – marimaf

+0

@marimaf:'readStringArray'不能爲你分配數組,因爲它不能改變引用參數指向的對象。 'createStringArray'不需要引用,並且爲你創建數組。 –

+0

謝謝!我會接受你的回答 – marimaf

相關問題