有两种方法传递Object给Bundle
方式一:
package de.padde.test;
import android.app.Activity;
import android.os.Bundle;
import android.os.Parcelable;
import android.os.Parcel;
public class Test extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(!savedInstanceState.isEmpty()) {
SaveMe state = savedInstanceState.getParcelable("laststate");
}
}
protected void onPause() {
Bundle b = new Bundle();
b.putParcelable("laststate", new SaveMe());
onSaveInstanceState(b);
}
}
class SaveMe implements Parcelable {
static final int test = 1234;
private int user;
private String name;
private double score;
private SaveMeToo smt;
public void writeToParcel(Parcel out, int flags) {
out.writeInt(user);
out.writeString(name);
out.writeDouble(score);
out.writeParcelable(smt, flags);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public SaveMe createFromParcel(Parcel in) { return new SaveMe(in); }
public SaveMe[] newArray(int size) { return new SaveMe[size]; }
};
private SaveMe(Parcel in) {
user = in.readInt();
name = in.readString();
score = in.readDouble();
smt = in.readParcelable(getClass().getClassLoader());
}
public SaveMe() {}
public int describeContents() { return 0; }
}
class SaveMeToo implements Parcelable {
private int moo;
public void writeToParcel(Parcel out, int flags) {
out.writeInt(moo);
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public SaveMeToo createFromParcel(Parcel in) { return new SaveMeToo(in); }
public SaveMeToo[] newArray(int size) { return new SaveMeToo[size]; }
};
private SaveMeToo(Parcel in) {
moo = in.readInt();
}
public int describeContents() { return 0; }
}
方式二:
package de.padde.test;
import java.io.Serializable;
import android.app.Activity;
import android.os.Bundle;
public class Test extends Activity {
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
if(!savedInstanceState.isEmpty()) {
SaveMe state = (SaveMe) savedInstanceState.getSerializable("laststate");
}
}
protected void onPause() {
Bundle b = new Bundle();
b.putSerializable("laststate", new SaveMe());
onSaveInstanceState(b);
}
}
class SaveMe implements Serializable {
private static final long serialVersionUID = 1L;
static final int test = 1234;
private int user;
private String name;
private double score;
private SaveMeToo smt;
public SaveMe() {}
}
class SaveMeToo implements Serializable {
private static final long serialVersionUID = 2L;
private int moo;