Intent之间传递object的两种方法

来源:互联网 发布:装修后房子网络不通 编辑:程序博客网 时间:2024/06/03 18:52

 

Intent之间传递object的两种方法:被传递的对象的类实现Parcelable接口,或者实现Serialiable接口。

http://www.anddev.org/putting_an_object_into_a_bundle-t6431.html

http://blog.csdn.net/Android_Tutor/archive/2010/07/16/5740845.aspx

 

Method 1

 

  1. package de.padde.test;
  2.  
  3. import android.app.Activity;
  4. import android.os.Bundle;
  5. import android.os.Parcelable;
  6. import android.os.Parcel;
  7.  
  8. public class Test extends Activity {
  9.  
  10.     public void onCreate(Bundle savedInstanceState) {
  11.         super.onCreate(savedInstanceState);
  12.         setContentView(R.layout.main);
  13.        
  14.         if(!savedInstanceState.isEmpty()) {
  15.             SaveMe state = savedInstanceState.getParcelable("laststate");
  16.         }
  17.                
  18.     }
  19.    
  20.     protected void onPause() {
  21.         Bundle b = new Bundle();
  22.            b.putParcelable("laststate", new SaveMe());
  23.  
  24.            onSaveInstanceState(b);
  25.     }
  26. }
  27.  
  28. class SaveMe implements Parcelable {
  29.     static final int test = 1234;
  30.     private int user;
  31.     private String name;
  32.     private double score;
  33.     private SaveMeToo smt;
  34.    
  35.     public void writeToParcel(Parcel out, int flags) {
  36.         out.writeInt(user);
  37.         out.writeString(name);
  38.         out.writeDouble(score);
  39.         out.writeParcelable(smt, flags);
  40.     }
  41.  
  42.     public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
  43.         public SaveMe createFromParcel(Parcel in) { return new SaveMe(in); }
  44.         public SaveMe[] newArray(int size) { return new SaveMe[size]; }
  45.     };
  46.    
  47.     private SaveMe(Parcel in) {
  48.         user = in.readInt();
  49.         name = in.readString();
  50.         score = in.readDouble();
  51.         smt = in.readParcelable(getClass().getClassLoader());
  52.     }
  53.    
  54.     public SaveMe() {}
  55.  
  56.     public int describeContents() { return 0; }
  57. }
  58.  
  59. class SaveMeToo implements Parcelable {
  60.     private int moo;
  61.    
  62.     public void writeToParcel(Parcel out, int flags) {
  63.         out.writeInt(moo);
  64.     }
  65.    
  66.     public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
  67.         public SaveMeToo createFromParcel(Parcel in) { return new SaveMeToo(in); }
  68.         public SaveMeToo[] newArray(int size) { return new SaveMeToo[size]; }
  69.     };
  70.    
  71.     private SaveMeToo(Parcel in) {
  72.         moo = in.readInt();
  73.     }
  74.    
  75.     public int describeContents() { return 0; }
  76. }
  77.  
Parsed in 0.200 seconds, using GeSHi 1.0.8.4

 

原创粉丝点击