2012-04-24 78 views
0

在我的項目,我有一個類實現Parcelable爲:安卓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。 請問我出錯的地方。

+0

需要投:'cursorParcel光標=(cursorParcel)bundle.getParcelable( 「光標」) ;' – yorkw 2012-04-24 23:53:44

+0

你可以請你發佈代碼,你把'cursorParcel'類(順便說一句,Java中的類應該以大寫字母開頭)放到'Bundle'和'Intent'中? – m0skit0 2012-08-02 15:38:07

回答

0

試試這個:

cursorParcel mPerson = (cursorParcel)getIntent().getSerializableExtra("cursor"); 
+0

無法正常工作。最初我鑄造了它,但看到了這種現象,將它刪除了。再次嘗試,但沒有工作。 – 2012-04-26 00:04:33

-1

我想你應該寫你的變量作爲字符串WriteToParcel:

arg0.writeStringArray(new String[]{String.valueOf(id),String.valueOf(edc),String.valueOf(details),this.name,this.notes}); 
+0

不,這不是解決方案... – m0skit0 2012-08-02 15:36:28