有两种方法传递Object给Bundle
Method 1
Java: |
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; } } |
Method 2
Java: |
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; public SaveMeToo() {} } |