0

私のプロジェクトでは、Parcelable を次のように実装するクラスがあります。

public class cursorParcel implements Parcelable{

    private long id;
    private long edc;
    private String name;
    private String notes;
    private long details;

    public cursorParcel() {
        id = 0;
        edc = 0;
        details = 0;
        notes = null;
        name = null;
    }
    public cursorParcel(Parcel in){
        id = in.readLong();
        edc= in.readLong();
        details= in.readLong();
        name= in.readString();
        notes=in.readString();
    }
    public void setCursor (Cursor cursor){
        id = cursor.getLong(1);
        edc = cursor.getLong(cursor.getColumnIndex("edc"));
        details = cursor.getLong(cursor.getColumnIndex("details"));
        notes = cursor.getString(cursor.getColumnIndex("notes"));
        name = cursor.getString(cursor.getColumnIndex("name"));
    }
    @Override
    public int describeContents() {
        return 0;
    }
    @Override
    public void writeToParcel(Parcel arg0, int arg1) {
        arg0.writeLong(id);
        arg0.writeLong(edc);
        arg0.writeLong(details);
        arg0.writeString(name);
        arg0.writeString(notes);
    }
    public long getId(){
        return id;
    }
    public long getEdc(){
        return edc;
    }
    public long getDetails(){
        return details;
    }
    public String getName(){
        return name;
    }
    public String getNotes(){
        return notes;
    }
    public static final Parcelable.Creator<cursorParcel> CREATOR =  new Parcelable.Creator<cursorParcel>() {
            public cursorParcel createFromParcel(Parcel in) {
                return new cursorParcel(in);
            }
            public cursorParcel[] newArray(int size) {
                return new cursorParcel[size];
            }
    };  
}

それをバンドルしてインテントに渡し、アンパックすると例外が発生します。

Bundle bundle = this.getIntent().getExtras();
        if (bundle!=null){
            cursorParcel cursor =  bundle.getParcelable("cursor");
        }

この時点で ClassCastException が発生します。私が間違っていたところを親切に助けてください。

4

2 に答える 2

0

これを試して:

cursorParcel  mPerson = (cursorParcel)getIntent().getSerializableExtra("cursor");
于 2012-04-24T17:40:12.560 に答える
-1

WriteToParcel で変数を文字列として記述する必要があると思います。

arg0.writeStringArray(new String[]{String.valueOf(id),String.valueOf(edc),String.valueOf(details),this.name,this.notes});
于 2012-04-25T05:07:08.150 に答える