gpt4 book ai didi

android - 发送带有 Intent 的嵌套 Parcelable

转载 作者:太空狗 更新时间:2023-10-29 16:16:51 29 4
gpt4 key购买 nike

我正在尝试发送一个 Parcelable 对象,该对象还包含另一个具有 Intent 的 Parcelable 对象。但是,我收到 NullPointer 异常。你能告诉我哪里做错了吗?

A.java

public class A  implements Parcelable {

private ArrayList<B> var;

public A()
{
this.var = new ArrayList<B>();
}

public void addToB(B b)
{
var.add(b);
}


public ArrayList<B> getB() {
return var;
}

public void setB(ArrayList<B> b) {
this.var = b;
}

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

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

dest.writeTypedList(this.var);

}

private A (Parcel in){

in.readTypedList(this.var, B.CREATOR);
}

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

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

}

B.java

public class B implements Parcelable  {

private String type;


public B(String type)
{
this.type=type;
}

public String getType() {
return type;
}
public void setType(String type) {
this.type = type;
}


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

@Override
public void writeToParcel(Parcel arg0, int arg1) {
arg0.writeString(this.type);
}

private B(Parcel in) {
this.type=in.readString();
}

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

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

}

我像这样发送带有 Intent 的 A 对象:

Intent i = new Intent(Bla.this, Blabla.class);
i.putExtra("info", objectA);
startActivity(i);

我收到这样的包裹:

Intent i = getIntent();
ObjectA ci = (ObjectA)i.getParcelableExtra("info");

最佳答案

您必须在以下位置实例化您的 ArrayList< B >:

 private A (Parcel in){
var = new ArrayList<B>();
in.readTypedList(this.var, B.CREATOR);
}

说说它是否有效:)

关于android - 发送带有 Intent 的嵌套 Parcelable,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24909331/

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