在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,以下是我为大家做的一个实例

首先我们建立一个工程项目命名为:ObjectTestDemo

然后我们再修改main.xml布局文件,主要增加2个按钮

代码
                             1           view plaincopy to clipboardprint          ?          
2
3    < ? xml version = " 1.0 " encoding = " utf-8 " ?>
4
5    < LinearLayout xmlns:android = " http://schemas.android.com/apk/res/android "
6
7   android:orientation = " vertical "
8
9   android:layout_width = " fill_parent "
10
11   android:layout_height = " fill_parent "
12
13    >
14
15    < TextView
16
17   android:layout_width = " fill_parent "
18
19   android:layout_height = " wrap_content "
20
21   android:text = " Welcome to Mr Jesson's blog. "
22
23    />
24
25    < Button
26
27   android:id = " @+id/button1 "
28
29   android:layout_width = " fill_parent "
30
31   android:layout_height = " wrap_content "
32
33   android:text = " Serializable "
34
35    />
36
37    < Button
38
39   android:id = " @+id/button2 "
40
41   android:layout_width = " fill_parent "
42
43   android:layout_height = " wrap_content "
44
45   android:text = " Parcelable "
46
47    />
48
49    < / LinearLayout >
50
51    < ? xml version = " 1.0 " encoding = " utf-8 " ?>
52
53    < LinearLayout xmlns:android = " http://schemas.android.com/apk/res/android "
54
55   android:orientation = " vertical "
56
57   android:layout_width = " fill_parent "
58
59   android:layout_height = " fill_parent "
60
61    >
62
63    < TextView
64
65   android:layout_width = " fill_parent " android:layout_height = " wrap_content "
66
67   android:text = " Welcome to Mr jesson's blog. "
68
69    />
70
71    < Button
72
73   android:id = " @+id/button1 "
74
75   android:layout_width = " fill_parent "
76
77   android:layout_height = " wrap_content "
78
79   android:text = " Serializable "
80
81    />
82
83    < Button
84
85   android:id = " @+id/button2 "
86
87   android:layout_width = " fill_parent "
88
89   android:layout_height = " wrap_content "
90
91   android:text = " Parcelable "
92
93    />
94
95    < / LinearLayout >
96

接下来我们开始对工程进行实现,分别建立Person.java实现Serializable接口,另一个Book.java实现Parcelable接口

代码
                             1           package           com.test.objecttran;
2
3    import java.io.Serializable;
4
5    public class Person implements Serializable {
6
7    private static final long serialVersionUID = - 7060210544600464481L ;
8
9    private String name;
10
11    private int age;
12
13    public String getName() {
14
15    return name;
16
17   }
18
19    public void setName(String name) {
20
21    this .name = name;
22
23   }
24
25    public int getAge() {
26
27    return age;
28
29   }
30
31    public void setAge( int age) {
32
33    this .age = age;
34
35   }
36
37   }
38

代码
                             1           package           com.test.tutor.objecttran;
2
3    import java.io.Serializable;
4
5    public class Person implements Serializable {
6
7    private static final long serialVersionUID = - 7060210544600464481L ;
8
9    private String name;
10
11    private int age;
12
13    public String getName() {
14
15    return name;
16
17   }
18
19    public void setName(String name) {
20
21    this .name = name;
22
23   }
24
25    public int getAge() {
26
27    return age;
28
29   }
30
31    public void setAge( int age) {
32
33    this .age = age;
34
35   }
36
37   }
38

代码
                             1           package           com.test.tutor.objecttran;
2
3
4
5   import android.os.Parcel;
6
7    import android.os.Parcelable;
8
9    public class Book implements Parcelable {
10
11    private String bookName;
12
13    private String author;
14
15    private int publishTime;
16
17    public String getBookName() {
18
19    return bookName;
20
21   }
22
23    public void setBookName(String bookName) {
24
25    this .bookName = bookName;
26
27   }
28
29    public String getAuthor() {
30
31    return author;
32
33   }
34
35    public void setAuthor(String author) {
36
37    this .author = author;
38
39   }
40
41    public int getPublishTime() {
42
43    return publishTime;
44
45   }
46
47    public void setPublishTime( int publishTime) {
48
49    this .publishTime = publishTime;
50
51   }
52
53    public static final Parcelable.Creator CREATOR = new Creator() {
54
55    public Book createFromParcel(Parcel source) {
56
57   Book mBook = new Book();
58
59   mBook.bookName = source.readString();
60
61   mBook.author = source.readString();
62
63   mBook.publishTime = source.readInt();
64
65    return mBook;
66
67   }
68
69    public Book[] newArray( int size) {
70
71    return new Book[size];
72
73   }
74
75   };
76
77    public int describeContents() {
78
79    return 0 ;
80
81   }
82
83    public void writeToParcel(Parcel parcel, int flags) {
84
85   parcel.writeString(bookName);
86
87   parcel.writeString(author);
88
89   parcel.writeInt(publishTime);
90
91   }
92
93   }
94

代码
                             1           package           com.test.tutor.objecttran;
2
3    import android.os.Parcel;
4
5    import android.os.Parcelable;
6
7    public class Book implements Parcelable {
8
9    private String bookName;
10
11    private String author;
12
13    private int publishTime;
14
15    public String getBookName() {
16
17    return bookName;
18
19   }
20
21    public void setBookName(String bookName) { this .bookName = bookName;
22
23   }
24
25    public String getAuthor() {
26
27    return author;
28
29   }
30
31    public void setAuthor(String author) {
32
33    this .author = author;
34
35   }
36
37    public int getPublishTime() {
38
39    return publishTime;
40
41   }
42
43    public void setPublishTime( int publishTime) {
44
45    this .publishTime = publishTime;
46
47   }
48
49    public static final Parcelable.Creator CREATOR = new Creator() {
50
51    public Book createFromParcel(Parcel source) {
52
53   Book mBook = new Book();
54
55   mBook.bookName = source.readString();
56
57   mBook.author = source.readString();
58
59   mBook.publishTime = source.readInt();
60
61    return mBook;
62
63   }
64
65    public Book[] newArray( int size) {
66
67    return new Book[size];
68
69   }
70
71   };
72
73    public int describeContents() {
74
75    return 0 ;
76
77   }
78
79    public void writeToParcel(Parcel parcel, int flags) {
80
81   parcel.writeString(bookName);
82
83   parcel.writeString(author);
84
85   parcel.writeInt(publishTime);
86
87   }
88
89   }
90

修改ObjectTranDemo.java,并且新建两个Activity,一个是ObjectTranDemo1.java,别一个是ObjectTranDemo2.java.分别用来显示Person对像数据,和Book对象数据

代码
                             1           package           com.test.tutor.objecttran;
2
3    import android.app.Activity;
4
5    import android.content.Intent;
6
7    import android.os.Bundle;
8
9    import android.view.View;
10
11    import android.view.View.OnClickListener;
12
13    import android.widget.Button;
14
15    public class ObjectTranDemo extends Activity implements OnClickListener {
16
17    private Button sButton,pButton;
18
19    public final static String SER_KEY = " com.tutor.objecttran.ser " ;
20
21    public final static String PAR_KEY = " com.tutor.objecttran.par " ;
22
23 public void onCreate(Bundle savedInstanceState) {
24
25    super .onCreate(savedInstanceState);
26
27   setContentView(R.layout.main);
28
29   setupViews();
30
31   }
32
33
34    public void setupViews(){
35
36   sButton = (Button)findViewById(R.id.button1);
37
38   pButton = (Button)findViewById(R.id.button2);
39
40   sButton.setOnClickListener( this );
41
42   pButton.setOnClickListener( this );
43
44   }
45
46    // Serializeable传递对象的方法
47
48    public void SerializeMethod(){
49
50   Person mPerson = new Person();
51
52   mPerson.setName( " frankie " );
53
54   mPerson.setAge( 25 );
55
56   Intent mIntent = new Intent( this ,ObjectTranDemo1. class );
57
58   Bundle mBundle = new Bundle();
59
60   mBundle.putSerializable(SER_KEY,mPerson);
61
62   mIntent.putExtras(mBundle);
63
64   startActivity(mIntent);
65
66   }
67
68    // Pacelable传递对象方法
69
70    public void PacelableMethod(){
71
72   Book mBook = new Book();
73
74   mBook.setBookName( " Android Tutor " );
75
76   mBook.setAuthor( " Frankie " );
77
78   mBook.setPublishTime( 2010 );
79
80   Intent mIntent = new Intent( this ,ObjectTranDemo2. class );
81
82   Bundle mBundle = new Bundle();
83
84   mBundle.putParcelable(PAR_KEY, mBook);
85
86   mIntent.putExtras(mBundle);
87
88   startActivity(mIntent);
89
90   }
91
92    // 铵钮点击事件响应
93
94    public void onClick(View v) {
95
96    if (v == sButton){
97
98   SerializeMethod();
99
100   } else {
101
102   PacelableMethod();
103
104   }
105
106   }
107
108   }
109

代码
                             1                      package           com.test.tutor.objecttran;
2
3    import android.app.Activity;
4
5    import android.content.Intent;
6
7    import android.os.Bundle;
8
9    import android.view.View;
10
11    import android.view.View.OnClickListener;
12
13    import android.widget.Button;
14
15    public class ObjectTranDemo extends Activity implements OnClickListener {
16
17
18
19    private Button sButton,pButton;
20
21    public final static String SER_KEY = " com.tutor.objecttran.ser " ;
22
23    public final static String PAR_KEY = " com.tutor.objecttran.par " ;
24
25    public void onCreate(Bundle savedInstanceState) {
26
27    super .onCreate(savedInstanceState);
28
29   setContentView(R.layout.main);
30
31   setupViews();
32
33   }
34
35    public void setupViews(){
36
37   sButton = (Button)findViewById(R.id.button1);
38
39   pButton = (Button)findViewById(R.id.button2);
40
41   sButton.setOnClickListener( this );
42
43   pButton.setOnClickListener( this );
44
45   }
46
47    // Serializeable传递对象的方法
48
49    public void SerializeMethod(){
50
51   Person mPerson = new Person();
52
53   mPerson.setName( " frankie " );
54
55   mPerson.setAge( 25 );
56
57   Intent mIntent = new Intent( this ,ObjectTranDemo1. class );
58
59   Bundle mBundle = new Bundle();
60
61   mBundle.putSerializable(SER_KEY,mPerson);
62
63   mIntent.putExtras(mBundle);
64
65   startActivity(mIntent);
66
67   }
68
69    // Pacelable传递对象方法
70
71    public void PacelableMethod(){
72
73   Book mBook = new Book();
74
75   mBook.setBookName( " Android Tutor " );
76
77   mBook.setAuthor( " Frankie " );
78
79   mBook.setPublishTime( 2010 );
80
81   Intent mIntent = new Intent( this ,ObjectTranDemo2. class );
82
83   Bundle mBundle = new Bundle();
84
85   mBundle.putParcelable(PAR_KEY, mBook);
86
87   mIntent.putExtras(mBundle);
88
89   startActivity(mIntent);
90
91   }
92
93    // 铵钮点击事件响应
94
95    public void onClick(View v) {
96
97    if (v == sButton){
98
99   SerializeMethod();
100
101   } else {
102
103   PacelableMethod();
104
105   }
106
107   }
108
109   }
110

代码
                             1           package           com.test.tutor.objecttran;
2
3    import android.app.Activity;
4 import android.os.Bundle;
5   import android.widget.TextView;
6
7    public class ObjectTranDemo1 extends Activity {
8
9   @Override
10
11    public void onCreate(Bundle savedInstanceState) {
12
13    super .onCreate(savedInstanceState);
14
15   TextView mTextView = new TextView( this );
16
17   Person mPerson = (Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);
18
19   mTextView.setText( " You name is: " + mPerson.getName() + "" +
20
21    " You age is: " + mPerson.getAge());
22
23   setContentView(mTextView);
24
25   }
26
27   }
28

代码
                             1           package           com.test.tutor.objecttran;
2
3    import android.app.Activity;
4
5    import android.os.Bundle;
6
7    import android.widget.TextView;
8
9    public class ObjectTranDemo1 extends Activity {
10
11   @Override
12
13    public void onCreate(Bundle savedInstanceState) {
14
15    super .onCreate(savedInstanceState);
16
17   TextView mTextView = new TextView( this );
18
19   Person mPerson = (Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);
20
21   mTextView.setText( " You name is: " + mPerson.getName() + "" +
22
23    " You age is: " + mPerson.getAge());
24
25   setContentView(mTextView);
26
27   }
28
29   }
30

代码
                             1           package           com.test.tutor.objecttran;
2
3    import android.app.Activity;
4
5    import android.os.Bundle;
6
7    import android.widget.TextView;
8
9    public class ObjectTranDemo2 extends Activity {
10
11    public void onCreate(Bundle savedInstanceState) {
12
13    super .onCreate(savedInstanceState);
14
15   TextView mTextView = new TextView( this );
16
17   Book mBook = (Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);
18
19   mTextView.setText( " Book name is: " + mBook.getBookName() + "" +
20
21    " Author is: " + mBook.getAuthor() + "" +
22
23    " PublishTime is: " + mBook.getPublishTime()); setContentView(mTextView);
24
25   }
26
27   }
28

代码
                             1                      package           com.test.tutor.objecttran;
2
3    import android.app.Activity;
4
5    import android.os.Bundle;
6
7    import android.widget.TextView;
8
9    public class ObjectTranDemo2 extends Activity {
10
11    public void onCreate(Bundle savedInstanceState) {
12
13    super .onCreate(savedInstanceState);
14
15   TextView mTextView = new TextView( this );
16
17   Book mBook = (Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);
18
19   mTextView.setText( " Book name is: " + mBook.getBookName() + "" +
20
21    " Author is: " + mBook.getAuthor() + "" +
22
23    " PublishTime is: " + mBook.getPublishTime());
24
25   setContentView(mTextView);
26
27   }
28
29   }
30

下面是最重要的环节:修改AndroidManifest.xml文件(将两个新增的Activity,ObjecttestDemo1,ObjecttestDemo2)申明一下代码如下(第14,15行):

代码
                             1                       <           ?xml           version          ="1.0"           encoding          ="utf-8"          ?          >          
2
3    < manifest xmlns:android ="http://schemas.android.com/apk/res/android"
4
5   package ="com.test.tutor.objecttran"
6
7   android:versionCode ="1"
8
9   android:versionName ="1.0" >
10
11    < application android:icon ="@drawable/icon" android:label ="@string/app_name" >
12
13    < activity android:name =".ObjectTranDemo"
14
15   android:label ="@string/app_name" >
16
17    < intent-filter >
18
19    < action android:name ="android.intent.action.MAIN" />
20
21    < category android:name ="android.intent.category.LAUNCHER" />
22
23    < /intent-filter >
24
25    < /activity >
26
27    < activity android:name =".ObjecttestDemo1" >< /activity >
28
29    < activity android:name =".ObjecttestDemo2" >< /activity >
30
31    < /application >
32
33    < uses-sdk android:minSdkVersion ="7" />
34
35    < /manifest >
36
37    < ?xml version ="1.0" encoding ="utf-8" ? >
38
39   < manifest xmlns:android ="http://schemas.android.com/apk/res/android"
40
41   package ="com.test.tutor.objecttran"
42
43   android:versionCode ="1"
44
45   android:versionName ="1.0" >
46
47    < application android:icon ="@drawable/icon" android:label ="@string/app_name" >
48
49    < activity android:name =".ObjectTranDemo"
50
51   android:label ="@string/app_name" >
52
53    < intent-filter >
54
55    < action android:name ="android.intent.action.MAIN" />
56
57    < category android:name ="android.intent.category.LAUNCHER" />
58
59    < /intent-filter >
60
61    < /activity >
62
63    < activity android:name =".ObjecttestDemo1" >< /activity >
64
65    < activity android:name =".ObjecttestDemo2" >< /activity >
66
67    < /application >
68
69    < uses-sdk android:minSdkVersion ="7" />
70
71    < /manifest >
72

再接下来就是编译,运行看效果了哈!!!

更多相关文章

  1. Android JUnit Test——批量运行测试代码
  2. 在 Android 使用 Support Annotations 注解优化代码
  3. Android studio插件GsonFormat,返回json快速创建实体对象
  4. Android判断网络连接是否可用(代码)
  5. Android中使用代码开关GPS、移动网络(GPRS)、WiFi
  6. Android AIDL接口定义语言

随机推荐

  1. 分享七个非常有用的Android开发工具和工
  2. Android RIL总体架构介绍
  3. 图片走廊
  4. Mac Android Studio获取数字签名的方法
  5. Mac版Android studio中使用lambda表达式
  6. Android问题:com.android.builder.packagi
  7. Android Camera子系统代码流程1
  8. Android实现图片放大缩小
  9. cocos2dx在xcode下开发,编译到android上
  10. Android面试之---谈谈你对Android(安卓)N