简体   繁体   English

将自定义对象传递给活动

[英]Passing custom objects to Activities

I want to pass a custom object from one Activity to another, here is what I have so far: 我想将一个自定义对象从一个Activity传递到另一个Activity,这是我到目前为止所拥有的:

Guests.java : Guests.java:

public class Guest extends Booking implements Serializable {
    public String SampleFunc(){
        return "hello";
    }
}

FirstActivity.this : FirstActivity.this:

private ArrayList<Guest> guests = new ArrayList<Guest>();
....
this.guests.add(new Guest("Joe Blog","Standart","F01","22/22/2012"));
this.guests.add(new Guest("Herpa Bunn","Standart","F02","22/22/2012"));

Intent i = new Intent(FirstActivity.this, SecondActivity.class);
i.putExtra("guests", this.guests);
startActivity(i);

SecondActivity.java : SecondActivity.java:

ArrayList<Guest> basket =
         (ArrayList<Guest>).getIntent().getSerializableExtra("guests");
//this will crashes the program

LogCat : LogCat:

05-03 18:30:34.216: W/System.err(492): java.lang.RuntimeException: Parcelable encountered IOException reading a Serializable object (name = ie.wit.hotelmanager.models.Guest)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readSerializable(Parcel.java:1886)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readValue(Parcel.java:1761)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readSerializable(Parcel.java:1886)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readValue(Parcel.java:1761)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readSerializable(Parcel.java:1886)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readValue(Parcel.java:1761)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readListInternal(Parcel.java:1956)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readArrayList(Parcel.java:1403)
05-03 18:30:34.216: W/System.err(492):  at android.os.Parcel.readValue(Parcel.java:1734)
05-03 18:30:34.226: W/System.err(492):  at android.os.Parcel.readMapInternal(Parcel.java:1947)
05-03 18:30:34.226: W/System.err(492):  at android.os.Bundle.unparcel(Bundle.java:169)
05-03 18:30:34.226: W/System.err(492):  at android.os.Bundle.getSerializable(Bundle.java:1126)
05-03 18:30:34.226: W/System.err(492):  at android.content.Intent.getSerializableExtra(Intent.java:3311)
05-03 18:30:34.226: W/System.err(492):  at ie.wit.hotelmanager.ViewGuestActivity.onCreate(ViewGuestActivity.java:25)
05-03 18:30:34.226: W/System.err(492):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
05-03 18:30:34.226: W/System.err(492):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2459)
05-03 18:30:34.226: W/System.err(492):  at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2512)
05-03 18:30:34.226: W/System.err(492):  at 05-03 18:30:34.216: W/System.err(492):   at android.os.Parcel.readListInternal(Parcel.java:1956)
....

What should I do? 我该怎么办? I added a catlog above. 我在上面添加了一个catlog。

you should implement Parcelable and then sent your array like 你应该实现Parcelable然后发送你的数组

Intent.putParcelableArrayListExtra("array",yourarray);

and other activity get it as 和其他活动得到它

 Bundle bundle = getIntent().getExtras();
    List<Guest> guestList = bundle.getParcelableArrayList("array");

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM