我有一个客户对象类,我需要从一个活动传递到另一个活动。
我正在使用包裹包裹来帮助我做到这一点,但我遇到了一些问题
1)双数组变量#(现在是主要问题)
我可以writeDoubleArray
但我不能readDoubleArray
in.readDoubleArray();
行用红色下划线表示:
“类型为Parcel的方法readDoubleArray(double[])
不适用于参数()”
2)日历变量
我不知道要使用什么功能来编写日历,所以我只是尝试了writeValue
我尚未测试它是否可以正常工作。我需要这个建议
3)可绘制变量
我的对象中有一个drawable属性,我已经搜索了一种解决方案,并使用了它,但是当前的解决方案表明它已贬值。所以即时通讯也不确定是否会工作。我也需要这个建议
我希望你能帮助我。谢谢!
我的代码:
//My attributes
public class Event {
public int eventID;
public String eventName;
public String eventDesc;
public String category;
public String vendor;
public String venue;
public Calendar startDateTime;
public Calendar endDateTime;
public Drawable eventImage;
public double[] price;
public double lat;
public double lng;
....
//Other constructors here
....
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(eventID);
dest.writeString(eventName);
dest.writeString(eventDesc);
dest.writeString(category);
dest.writeString(vendor);
dest.writeString(venue);
dest.writeValue(startDateTime);
dest.writeValue(endDateTime);
Bitmap bitmap = (Bitmap) ((BitmapDrawable) eventImage).getBitmap();
dest.writeParcelable(bitmap,flags);
dest.writeDoubleArray(price);
dest.writeDouble(lat);
dest.writeDouble(lng);
}
private void readFromParcel(Parcel in) {
eventID = in.readInt();
eventName = in.readString();
eventDesc = in.readString();
category = in.readString();
vendor = in.readString();
venue = in.readString();
startDateTime = (Calendar) in.readValue(getClass().getClassLoader());
endDateTime = (Calendar) in.readValue(getClass().getClassLoader());
Bitmap bitmap= (Bitmap)in.readParcelable(getClass().getClassLoader());
eventImage = new BitmapDrawable(bitmap);
price = in.readDoubleArray();
lat = in.readDouble();
lng = in.readDouble();
}
最佳答案
您正在尝试使用需要参数的方法读取双精度数组。使用readDoubleArray(double[])
时,需要在调用传入该数组作为参数的方法之前创建足够长的数组。
当您不想自己创建数组时,请使用in.createDoubleArray()
而不是in.readDoubleArray(double[])
。
对于Calendar对象,可以使用Parcel.writeSerializable(Serializable)
方法,因为Calendar类实现了Serializable接口。