Реализуйте интерфейс Parcelable
в вашем пользовательском объекте и передайте его через Intent
.
Вот пример Parcelable
объекта.
public class MyObject implements Parcelable {
private String someString = null;
private int someInteger = 0;
public MyObject() {
// perform initialization if necessary
}
private MyObject(Parcel in) {
someString = in.readString();
someInteger = in.readInt();
}
public static final Parcelable.Creator<MyObject> CREATOR =
new Parcelable.Creator<MyObject>() {
@Override
public MyObject createFromParcel(Parcel source) {
return new MyObject(source);
}
@Override
public MyObject[] newArray(int size) {
return new MyObject[size];
}
};
// Getters and setters
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(someString);
dest.writeInt(someInteger);
}
}
Вот что происходит. Если вы реализуете интерфейс Parcelable
, вы должны создать приватный конструктор, который принимает Parcel
в качестве параметра. Это Parcel
содержит все сериализованные значения.
Вы должны реализовать вложенный класс Parcelable.Creator
с именем CREATOR
, так как он будет вызываться Android при воссоздании вашего объекта.
Метод describeContents()
используется только в особых случаях. Вы можете оставить все как есть с возвращаемым значением 0
.
Интересное действие происходит в writeToParcel()
, где вы, как следует из названия, записываете свои данные в Parcel
объект.
Теперь вы можете просто добавить свой пользовательский объект непосредственно в Intent
, как в этом примере.
MyObject myObject = new MyObject();
Intent i = new Intent();
i.setExtra("MY_OBJECT", myObject);
// implicit or explicit destination declaration
startActivity(i);