android 对象的创建,android – 如何使用嵌套对象创建一个类Parcelable

我想让A级Parcelable.

public class A {

public String str;

public ArrayList list;

}

这是我到目前为止所提出的.但是它崩溃了NullPointerException.问题是这两个语句:dest.writeList(list); &安培; in.readList(list,this.getClass().getClassLoader());.

我无法弄清楚从这里做什么:(

A级

public class A implements Parcelable {

public String str;

public ArrayList list;

@Override

public int describeContents() {

// TODO Auto-generated method stub

return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

dest.writeString(str);

dest.writeList(list);

}

private A(Parcel in) {

str = in.readString();

in.readList(list, this.getClass().getClassLoader());

}

public static final Parcelable.Creator CREATOR

= new Parcelable.Creator() {

public A createFromParcel(Parcel in) {

return new A(in);

}

public A[] newArray(int size) {

return new A[size];

}

};

}

B级

public class B implements Parcelable {

public String str;

@Override

public int describeContents() {

// TODO Auto-generated method stub

return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

dest.writeString(str);

}

private B(Parcel in) {

str = in.readString();

}

public static final Parcelable.Creator CREATOR

= new Parcelable.Creator() {

public B createFromParcel(Parcel in) {

return new B(in);

}

public B[] newArray(int size) {

return new B[size];

}

};

}

感谢您的时间.

解决方法:

解决方案是使用read- / writeTypedList.我还初始化arraylist以避免任何进一步的NullPointerException.

A级

public class A implements Parcelable {

public String str;

public ArrayList list = new ArrayList();

@Override

public int describeContents() {

// TODO Auto-generated method stub

return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

dest.writeString(str);

dest.writeTypedList(list);

}

private A(Parcel in) {

str = in.readString();

in.readTypedList(list, B.CREATOR);

}

public static final Parcelable.Creator CREATOR

= new Parcelable.Creator() {

public A createFromParcel(Parcel in) {

return new A(in);

}

public A[] newArray(int size) {

return new A[size];

}

};

}

B级

public class B implements Parcelable {

public String str;

@Override

public int describeContents() {

// TODO Auto-generated method stub

return 0;

}

@Override

public void writeToParcel(Parcel dest, int flags) {

dest.writeString(str);

}

private B(Parcel in) {

str = in.readString();

}

public static final Parcelable.Creator CREATOR

= new Parcelable.Creator() {

public B createFromParcel(Parcel in) {

return new B(in);

}

public B[] newArray(int size) {

return new B[size];

}

};

}

标签:parcelable,android

来源: https://codeday.me/bug/20190926/1820996.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值