我已經寫了下面的在我的活動類的代碼,如何從活動得到Parcable捆綁在一個片段
ArrayList<TXData> data;
data= Map.getDataList();
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("data",data);
Fragment fragment = new MapsFragment();
fragment.setArguments(bundle);
在MapsFragment
,我已經寫了下面的代碼來獲得onActivityCreated()
方法的數據。
ArrayList<TXData> dataList;
dataList=getArguments().getParcelableArrayList("data");
它在Fragment類上返回以下異常。
所致:顯示java.lang.NullPointerException:嘗試在一個空 對象引用調用虛擬方法 java.util.ArrayList的 android.os.Bundle.getParcelableArrayList(java.lang.String中)
我添加了調試點,以找出問題的原因,它成功地將數據添加到來自Activity
的Bundle,但它沒有在Fragment中獲取任何數據。
請引導我在這裏做錯了什麼。
EDIT Parceable類
public class TXData implements Serializable, Parcelable{
public String id;
public String title;
public String pId = "";
public float heading;
public float pitch;
public int totalCount;
int mData;
public TXSData(){
}
protected TXData(Parcel in) {
id = in.readString();
title = in.readString();
pId = in.readString();
heading = in.readFloat();
pitch = in.readFloat();
totalCount = in.readInt();
mData = in.readInt();
minPrice = in.readInt();
maxPrice = in.readInt();
isInFilter = in.readByte() != 0;
isEnabled = in.readByte() != 0;
totalCount = in.readInt();
}
public static final Creator<TXData> CREATOR = new Creator<TXData>() {
@Override
public TXData createFromParcel(Parcel in) {
return new TXData(in);
}
@Override
public TXData[] newArray(int size) {
return new TXData[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(mData);
}
TXData你可以在問題中顯示這個類嗎? –
你在'onCreateView'上試過了嗎? –
@SurajRao:我已經更新了我的問題。 @ρяσѕρєяK:是的,onCreateView在Activity onCreate完成其工作之前調用,因此無法將數據添加到包中。而'onActivityCreated'成功地將數據添加到Bundle – Kirmani88