我有一个客户对象类,我需要从一个活动传递到另一个活动。
我正在使用包裹包裹来帮助我做到这一点,但我遇到了一些问题

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接口。

10-08 17:13