This is my way to pass data from Activity:
Intent intent = new Intent(JobFieldAttribute.this, JobCamera.class);
intent.putParcelableArrayListExtra("FieldDataList", fieldDataList);
startActivity(intent);
My object class:
public void writeToParcel(Parcel dest, int flags) {
//Writing to parcel
}
public static final Parcelable.Creator<FieldData> CREATOR = new Parcelable.Creator<FieldData>() {
@Override
public FieldData createFromParcel(Parcel in) {
FieldData fieldData = new FieldData();
fieldData.id = in.readInt();
Log.i("Pracel in", ">> " + in.readString());
fieldData.value = in.readString();
fieldData.job_transaction_id = in.readInt();
fieldData.field_attribute_master_id = in.readInt();
fieldData.required = in.readByte() != 0;
fieldData.viewType = in.readString();
fieldData.viewLabel = in.readString();
fieldData.viewSubLabel = in.readString();
fieldData.viewHelpText = in.readString();
return fieldData;
}
@Override
public FieldData[] newArray(int size) {
Log.v("Array size", ">>> "+ size);
return new FieldData[size];
}
};
My way to receive data:
Intent i = getIntent();
ArrayList<FieldData> fieldDataList = i.getParcelableArrayListExtra("FieldDataList");
This activity receives null list. I dont know what it means and what's wrong here.
Try to implemente Parcelable required method to read and write class field,Parcelable.Creator generate instance of your parcelable class from parcel and parcel also read-write class field value.
public class FieldData implements Parcelable {
private int id;
private String value;
private int job_transaction_id;
private int field_attribute_master_id;
private Byte required;
private String viewType;
private String viewLabel;
private String viewSubLabel;
private String viewHelpText;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags)
{
out.writeInt(id);
out.writeString(value);
out.writeInt(job_transaction_id);
out.writeInt(field_attribute_master_id);
out.writeByte(required);
out.writeString(viewType);
out.writeString(viewLabel);
out.writeString(viewSubLabel);
out.writeString(viewHelpText);
}
public static final Parcelable.Creator<FieldData> CREATOR
= new Parcelable.Creator<FieldData>() {
public FieldData createFromParcel(Parcel in) {
return new FieldData(in);
}
public FieldData[] newArray(int size) {
return new FieldData[size];
}
};
private FieldData(Parcel in) {
id = in.readInt();
value = in.readString();
job_transaction_id = in.readInt();
field_attribute_master_id = in.readInt();
required = in.readByte();
viewType = in.readString();
viewLabel = in.readString();
viewSubLabel = in.readString();
viewHelpText = in.readString();
}
}