ArrayList不能转换为Parcelable

我收到以下错误:

  • 关键com..BookStatus预计Parcelable但值是一个ArrayList
  • ClassCastException:无法将ArrayList强制转换为Parcelable – >和therafter:无法启动Activity – NullPointerException
  • ArrayList确实具有BookStatus对象(listToPass)

    • 关键com.example.books.BookStatus预计Parcelable但值是一个java.util.ArrayList。 默认值被返回
    • 尝试投射生成的内部exception:
    • java.lang.ClassCastException:java.util.ArrayList不能转换为android.os.Parcelable
    • 在com.example.books4locals.SearchActivity.onCreate(SearchActivity.java:46) – >这是bundle.getparcelable方法

我能做什么?

HomeActivity.java

ArrayList<BookStatus> listToPass = new ArrayList<BookStatus>(); // fill with smthg protected void onPostExecute(String result) { if (listToPass != null) { Intent i = new Intent(getApplicationContext(), SearchActivity.class); // ArrayList<BookStatus> bs = new ArrayList<BookStatus> (Arrays.asList(bArr)); i.putParcelableArrayListExtra("com.example.books.BookStatus", listToPass); startActivity(i); 

SearchActivity.java

  protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.searchactivity_main); Bundle bundle = getIntent().getExtras(); ArrayList<BookStatus> bookStatus = bundle .getParcelable("com.example.books.BookStatus"); 

BookStatus.java

  public class BookStatus implements Parcelable { public BookStatus() { } public BookStatus(Parcel in) { this.bookId=in.readInt(); this.address=in.readString(); this.name=in.readString(); this.author=in.readString(); this.lenderUserId=in.readInt(); this.isbn=in.readInt(); this.postcode=in.readString(); this.town=in.readString(); this.telnumber=in.readString(); this.mail=in.readString(); this.duration=in.readInt(); } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } @Override public void writeToParcel(Parcel dest, int flags) { dest.writeInt(this.bookId); dest.writeString(this.address); dest.writeString(this.name); dest.writeString(this.author); dest.writeInt(this.lenderUserId); dest.writeInt(this.isbn); dest.writeString(this.postcode); dest.writeString(this.town); dest.writeString(this.telnumber); dest.writeString(this.mail); dest.writeInt(this.duration); } public void readFromParcel(Parcel parcel){ this.bookId = parcel.readInt(); this.address = parcel.readString(); this.name = parcel.readString(); this.author = parcel.readString(); this.lenderUserId = parcel.readInt(); this.isbn = parcel.readInt(); this.postcode = parcel.readString(); this.town = parcel.readString(); this.telnumber = parcel.readString(); this.mail = parcel.readString(); this.duration = parcel.readInt(); } public static final Parcelable.Creator<BookStatus> CREATOR = new Parcelable.Creator<BookStatus>() { public BookStatus createFromParcel(Parcel in) { return new BookStatus(in); } public BookStatus[] newArray(int size) { return new BookStatus[size]; } }; 

Solutions Collecting From Web of "ArrayList不能转换为Parcelable"