Android 通过Intent传递对象列表后,该对象列表为空。对象类实现了Parcelable接口

Android 通过Intent传递对象列表后,该对象列表为空。对象类实现了Parcelable接口,android,android-intent,parcelable,Android,Android Intent,Parcelable,这是我从活动传递数据的方法: Intent intent = new Intent(JobFieldAttribute.this, JobCamera.class); intent.putParcelableArrayListExtra("FieldDataList", fieldDataList); startActivity(intent); 我的对象类: public void writeToParcel(Parcel dest, int flags) { //Writ

这是我从活动传递数据的方法:

   Intent intent = new Intent(JobFieldAttribute.this, JobCamera.class);
   intent.putParcelableArrayListExtra("FieldDataList", fieldDataList);
   startActivity(intent);
我的对象类:

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];
    }
};
public void writeToParcel(地块目的地,整数标志){
//给包裹写信
}   
public static final Parcelable.Creator=新建Parcelable.Creator(){
@凌驾
公共字段数据createFromParcel(地块在中){
FieldData FieldData=新的FieldData();
fieldData.id=in.readInt();
Log.i(“Pracel in”,“>>”+in.readString());
fieldData.value=in.readString();
fieldData.job_transaction_id=in.readInt();
fieldData.field_属性_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();
返回现场数据;
}
@凌驾
公共字段数据[]新数组(整数大小){
Log.v(“数组大小”、“>>>”+大小);
返回新的FieldData[大小];
}
};
我接收数据的方式:

Intent i = getIntent();
ArrayList<FieldData> fieldDataList =  i.getParcelableArrayListExtra("FieldDataList");
Intent i=getIntent();
ArrayList fieldDataList=i.GetParcelableArrayListXTRA(“fieldDataList”);

此活动接收空列表。我不知道这是什么意思,也不知道这里出了什么问题

尝试实现Parcelable required方法来读取和写入类字段Parcelable.Creator从parcel生成您的Parcelable类的实例,Parcelable还可以读取和写入类字段值

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();
    }
}
public类FieldData实现可包裹{
私有int-id;
私有字符串值;
私有int作业\事务\ id;
私有整型字段\属性\主id;
需要专用字节;
私有字符串视图类型;
私有字符串视图标签;
私有字符串视图子标签;
私有字符串viewHelpText;
公共int描述内容(){
返回0;
}
公共无效写入包(包出,内部标志)
{
out.writeInt(id);
out.writeString(值);
out.writeInt(作业\事务\ id);
out.writeInt(字段\属性\主机\ id);
out.writeByte(必需);
out.writeString(视图类型);
out.writeString(视图标签);
out.writeString(viewSubLabel);
out.writeString(viewHelpText);
}
公共静态最终包裹。创建者
=新的Parcelable.Creator(){
公共字段数据createFromParcel(地块在中){
返回新的字段数据(在中);
}
公共字段数据[]新数组(整数大小){
返回新的FieldData[大小];
}
};
专用字段数据(地块输入){
id=in.readInt();
value=in.readString();
job_transaction_id=in.readInt();
字段\属性\主控\ id=in.readInt();
必需=in.readByte();
viewType=in.readString();
viewLabel=in.readString();
viewSubLabel=in.readString();
viewHelpText=in.readString();
}
}

在传递给intent之前,您是否检查了fieldDataList?同时检查:@Hareshchelana是的,fieldDataList不是空的谢谢你…这很好。请你解释一下,这是如何通过创建构造函数而不是通过我的方式实现的。