2012-04-24 75 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