gpt4 book ai didi

java - 通过 Intent 传递后获取空对象。我的对象类实现了 Parcelable 接口(interface)。

转载 作者:行者123 更新时间:2023-11-29 20:58:40 25 4
gpt4 key购买 nike

Activity 1,我从那里发送我的 Parcelable 对象:

Intent intent = new Intent(JobFieldAttribute.this, JobCamera.class);
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
Bundle mBundle = new Bundle();
mBundle.putParcelable("FieldData", fieldData);
mBundle.putSerializable("JobTransaction",jobTransaction);
mBundle.putString("imgPos", 0+"");
intent.putExtra("parce",mBundle);
startActivity(intent);

我的对象类:

public class FieldData implements Parcelable {
private Integer id;
private String value;
private Integer job_transaction_id;
private Integer field_attribute_master_id;
private Boolean required;
private View view;
private String viewType;
private String viewLabel;
private String viewSubLabel;
private String viewHelpText;

//All Getter setter methods

@Override
public int describeContents() {
return 0;
}

@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(0);
dest.writeString(value);
try{
dest.writeInt(job_transaction_id);
}
catch(Exception e){dest.writeInt(0);}
dest.writeInt(field_attribute_master_id);
try{
dest.writeByte((byte) (required ? 1 : 0));
}
catch(Exception e){dest.writeByte((byte)0);}
try{
dest.writeString(viewType);
}
catch(Exception e){dest.writeString("NOVIEWTYPE");}
try{
dest.writeString(viewLabel);
}
catch(Exception e){dest.writeString("NO LABEL");}
try{
dest.writeString(viewSubLabel);
}
catch(Exception e){dest.writeString("NO SUB LABEL");}
try{
dest.writeString(viewHelpText);
}
catch(Exception e){dest.writeString("NO HELP TEXT");}
}

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) {
return new FieldData[size];
}
};

我的第二个 Activity ,它接收这个 Parcelable 对象:

super.onCreate(savedInstanceState); 
this.requestWindowFeature(Window.FEATURE_NO_TITLE);
this.setRequestedOrientation(ActivityInfo.SCREEN_ORIENTATION_PORTRAIT);
setContentView(R.layout.activity_job_camera);
FieldData fieldData = (FieldData) getIntent().getParcelableExtra("fieldData");

当我打印我的 fieldData 对象时,我得到一个 NullPointerException。我不明白这个错误的原因。我究竟做错了什么?我是 android 开发的新手,使用 Parcelable 接口(interface)通过 Intent 传递对象。请帮忙。

最佳答案

您正在输入 FieldData 但试图取回 fieldData。将其与@Dmitry Zaitsev 的回答相结合:getIntent().getBundleExtra("parce").getParcelableExtra("FieldData");

关于java - 通过 Intent 传递后获取空对象。我的对象类实现了 Parcelable 接口(interface)。,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26841758/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com