gpt4 book ai didi

java - 从 Bundle 接收 null Parcelable 对象

转载 作者:行者123 更新时间:2023-11-29 03:06:00 34 4
gpt4 key购买 nike

我想将一个 Parcelable 对象列表发送到一个 Activity ,但是当从 Activity 包中接收对象时我得到的是空对象

我有一个启动 Activity 的方法,发送 bundle 中的 Parcelable 对象列表:

    public void openActivity(){
ArrayList<ReportErrorVO> reports = new ArrayList<>();

ReporteErrorVO reportError = new ReporteErrorVO();
reportError.setTituloError("Error title 1");
reportError.setDescripcionError("Error description 1");
reports.add(reportError);

reportError = new ReporteErrorVO();
reportError.setTituloError("Error title 2");
reportError.setDescripcionError("Error description 2");
reports.add(reportError);

Intent intent = new Intent(this, ReporteErrorActivity.class);
Bundle args = new Bundle();
args.putParcelableArrayList("reports", reports);
intent.putExtras(args);
startActivity(intent);
}

我的 Parcelable 类:

public class ReportErrorVO implements Parcelable {

private String titleError;
private String descriptionError;

public ReportErrorVO(Parcel in) {
titleError = in.readString();
descriptionError = in.readString();
}

@Override
public void writeToParcel(Parcel dest, int flags) {

dest.writeString(titleError);
dest.writeString(descriptionError);
}

public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public ReportErrorVO createFromParcel(Parcel in) {
return new ReportErrorVO(in);
}

public ReportErrorVO[] newArray(int size) {
return new ReportErrorVO[size];
}
};

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

而调用的 Activity ,我得到:

@Override
protected void onCreate(Bundle savedInstanceState) {

...//Activity initializer code..

Bundle bundle = getIntent().getExtras();
ArrayList<ReportErrorVO> reports = new ArrayList<>();
try {
reports = bundle.getParcelableArrayList("reports");
}catch (Exception ex){
System.out.println(ex.getMessage());
}

}

问题是,当我分析报告数组时,我发现虽然我得到的大小 = 2,但我得到的第二个项目为空(项目位置 = 1)。请注意,列表中的第一个项目是完美的。怎么了?

最佳答案

我今天刚遇到同样的问题,我是这样解决的:

写入数据:

 Bundle data = new Bundle();
data.putParcelableArrayList("reports", reports);
intent.putExtra("bundle", data);

读取数据:

Bundle data = intent.getBundleExtra("bundle");
ArrayList<ReportErrorVO> reports= data.getParcelableArrayList("reports");

希望对您有所帮助:)

关于java - 从 Bundle 接收 null Parcelable 对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32184245/

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