2013-08-20 3 views
1

У меня возникли проблемы с передачей объекта через Intent. Я продолжаю получать ошибку с нулевым указателем. здесь:Передача Возможный предмет между действиями

В моей 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. Почему я не могу передать этот объект? Я смущен. Спасибо за любую помощь.

EDIT: Вот что класс:

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

сообщение MyObject.java – pskink

ответ

2

Если вы хотите передать данные от одного вида деятельности к другой actiivty через умысел объект должен быть parcelable или сериализацией в android..for parcelable вы должны реализовать сериализуемый interface..for parcelable вы должны реализовать интерфейс parcelable ..

Написать parcelable класс, как это .. parcel example

+0

Спасибо за ссылку. Это мне очень помогло. – Alex

Смежные вопросы