Intent之间传递object的两种方法

 

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

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值