Umsetzung der Parcelable
Schnittstelle in Ihrem benutzerdefinierten Objekt und übertragen Sie es über eine Intent
.
Hier ist ein Beispiel für eine Parcelable
Objekt.
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);
}
}
Das geschieht folgendermaßen. Wenn Sie die Parcelable
Schnittstelle müssen Sie einen privaten Konstruktor erstellen, der eine Parcel
als Parameter. Diese Parcel
enthält alle serialisierten Werte.
Sie müssen die verschachtelte Klasse Parcelable.Creator
mit dem Namen CREATOR
da dies von Android bei der Neuerstellung Ihres Objekts aufgerufen wird.
Die Methode describeContents()
ist nur in besonderen Fällen von Nutzen. Sie können es so belassen, wie es ist, mit einem Rückgabewert von 0
.
Die interessante Aktion findet statt in writeToParcel()
wo Sie, wie der Name schon sagt, Ihre Daten in eine Parcel
Objekt.
Jetzt können Sie Ihr benutzerdefiniertes Objekt einfach direkt in eine Intent
wie in diesem Beispiel.
MyObject myObject = new MyObject();
Intent i = new Intent();
i.setExtra("MY_OBJECT", myObject);
// implicit or explicit destination declaration
startActivity(i);