2

あるアクティビティから別のアクティビティに渡す必要がある顧客オブジェクト クラスがあります。これを行うためにparcelableを使用していますが、いくつかの問題が発生しました

1)Double Array variable# (現在の主な問題)

できるwriteDoubleArrayけどできないreadDoubleArray

in.readDoubleArray();は赤で下線が引かれ、次のように表示されます。

readDoubleArray(double[])Parcel 型のメソッドは引数 () には適用できません」

2) カレンダー変数

カレンダーを書くためにどの関数を使用writeValue すればよいかわからないので、試してみましたが、正しく動作するかどうかはテストしていません。これについてアドバイスが必要です

3) ドローアブル変数

オブジェクトにドローアブル属性があり、解決策を探して使用しましたが、現在のものは減価償却されていると言っています。したがって、それが機能するかどうかもわかりません。これについてもアドバイスが欲しい

あなたが私を助けてくれることを願っています。ありがとう!


私のコード:


          //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();
                }
4

2 に答える 2

4

パラメータを必要とするメソッドで double 配列を読み込もうとしています。使用readDoubleArray(double[])する場合、その配列をパラメーターとして渡すメソッドを呼び出す前に、(十分な長さの) 配列を作成する必要があります。

自分で配列を作成したくない場合は、in.createDoubleArray()代わりにin.readDoubleArray(double[]).

Calendar-object に関してはParcel.writeSerializable(Serializable)、Calendar クラスが Serializable インターフェイスを実装しているため、-method を使用できます。

于 2012-06-15T11:39:43.230 に答える