2013-08-20 230 views
1

我无法通过Intent传递对象。我不断收到空指针错误。这就是:在活动之间传递Parcelable项目

在我ListActivity:

@Override 
protected void onListItemClick(ListView l, View v, int position, long id) { 
    Intent intent = new Intent(MyListActivity.this, DetailsActivity.class); 
    intent.putExtra("this_item", my_array.get(position)); 
    startActivity(intent); 
} 

在OnCreate()的DetailsActivity类:

thisItem = (MyObject) getIntent().getExtras().getParcelable("this_item"); 
System.err.println(thisItem.getDescription()); //<--Null pointer error! 

MyObject类并实现Parcelable。为什么我不能通过这个对象?我很困惑。谢谢你的帮助。

编辑:这里是类:

public class MyObject implements Comparable<MyObject>, Parcelable { 

    private Date date; 
    private MyType my_type; 
    private String description; 
    private int flags; 

    public MyObject(Date date, MyType type, String desc) { 
     this.date = date; 
     this.my_type = type; 
     this.description = desc; 
    } 

    public Date getDate() {return date;} 
    public MyType getMyType() {return my_type;} 
    public String getDescription() {return description;} 

    public int compareTo(MyObject another) { 
     if (getDate() == null || another.getDate() == null) {return 0;} 
     return getDate().compareTo(another.getDate()); 
    } 

    public int describeContents() { 
     return 0; 
    } 

    public void writeToParcel(Parcel dest, int flags) { 
     dest.writeInt(flags); 
    } 

    public static final Parcelable.Creator<MyObject> CREATOR = new Parcelable.Creator<MyObject>() { 
     public MyObject createFromParcel(Parcel in) { 
      return new MyObject(in); 
     } 

     public MyObject[] newArray(int size) { 
      return new MyObject[size]; 
     } 
    }; 

    private MyObject (Parcel in) { 
     flags = in.readInt(); 
    } 
} 
+0

你肯定my_array.get(位置)返回一个parcelable对象? –

+1

post MyObject.java – pskink

回答

2

如果你想从一个活动的数据传递通过意向另一个actiivty对象必须是你必须实现android..for parcelable parcelable或序列化可序列化interface..for parcelable必须实现parcelable接口..

这样写parcelable类.. parcel example

+0

感谢您的链接。这对我帮助很大。 – Alex