私のプロジェクトでは、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 が発生します。私が間違っていたところを親切に助けてください。