Android系列之Intent传递对象的几种实例方法

 在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,以下是我为大家做的一个实例
  首先我们建立一个工程项目命名为:ObjectTestDemo
  然后我们再修改main.xml布局文件,主要增加2个按钮
view plaincopy to clipboardprint?
复制代码 代码如下:
  < ?xml version="1.0" encoding="utf-8"?>

  < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  < TextView

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Welcome to Mr Jesson's blog."

  />

  < Button

  android:id="@+id/button1"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Serializable"

  />

  < Button

  android:id="@+id/button2"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Parcelable"

  />

  < /LinearLayout>

  < ?xml version="1.0" encoding="utf-8"?>

  < LinearLayout xmlns:android="http://schemas.android.com/apk/res/android"

  android:orientation="vertical"

  android:layout_width="fill_parent"

  android:layout_height="fill_parent"

  >

  < TextView

  android:layout_width="fill_parent"android:layout_height="wrap_content"

  android:text="Welcome to Mr jesson's blog."

  />

  < Button

  android:id="@+id/button1"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Serializable"

  />

  < Button

  android:id="@+id/button2"

  android:layout_width="fill_parent"

  android:layout_height="wrap_content"

  android:text="Parcelable"

  />

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

[code]
package com.test.objecttran;

import java.io.Serializable;

public class Person implements Serializable {

private static final long serialVersionUID = -7060210544600464481L;

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

复制代码 代码如下:
package com.test.tutor.objecttran;

import java.io.Serializable;

public class Person implements Serializable {

private static final long serialVersionUID = -7060210544600464481L;

private String name;

private int age;

public String getName() {

return name;

}

public void setName(String name) {

this.name = name;

}

public int getAge() {

return age;

}

public void setAge(int age) {

this.age = age;

}

}

复制代码 代码如下:
package com.test.tutor.objecttran;

import android.os.Parcel;

import android.os.Parcelable;

public class Book implements Parcelable {

private String bookName;

private String author;

private int publishTime;

public String getBookName() {

return bookName;

}

public void setBookName(String bookName) {

this.bookName = bookName;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public int getPublishTime() {

return publishTime;

}

public void setPublishTime(int publishTime) {

this.publishTime = publishTime;

}

public static final Parcelable.Creator CREATOR = new Creator() {

public Book createFromParcel(Parcel source) {

Book mBook = new Book();

mBook.bookName = source.readString();

mBook.author = source.readString();

mBook.publishTime = source.readInt();

return mBook;

}

public Book[] newArray(int size) {

return new Book[size];

}

};

public int describeContents() {

return 0;

}

public void writeToParcel(Parcel parcel, int flags) {

parcel.writeString(bookName);

parcel.writeString(author);

parcel.writeInt(publishTime);

}

}

复制代码 代码如下:
package com.test.tutor.objecttran;

import android.os.Parcel;

import android.os.Parcelable;

public class Book implements Parcelable {

private String bookName;

private String author;

private int publishTime;

public String getBookName() {

return bookName;

}

public void setBookName(String bookName) {this.bookName = bookName;

}

public String getAuthor() {

return author;

}

public void setAuthor(String author) {

this.author = author;

}

public int getPublishTime() {

return publishTime;

}

public void setPublishTime(int publishTime) {

this.publishTime = publishTime;

}

public static final Parcelable.Creator CREATOR = new Creator() {

public Book createFromParcel(Parcel source) {

Book mBook = new Book();

mBook.bookName = source.readString();

mBook.author = source.readString();

mBook.publishTime = source.readInt();

return mBook;

}

public Book[] newArray(int size) {

return new Book[size];

}

};

public int describeContents() {

return 0;

}

public void writeToParcel(Parcel parcel, int flags) {

parcel.writeString(bookName);

parcel.writeString(author);

parcel.writeInt(publishTime);

}

}

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

代码

复制代码 代码如下:
package com.test.tutor.objecttran;

  import android.app.Activity;

  import android.content.Intent;

  import android.os.Bundle;

  import android.view.View;

  import android.view.View.OnClickListener;

  import android.widget.Button;

  public class ObjectTranDemo extends Activity implements OnClickListener {

  private Button sButton,pButton;

  public final static String SER_KEY = "com.tutor.objecttran.ser";

  public final static String PAR_KEY = "com.tutor.objecttran.par";

public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  setContentView(R.layout.main);

  setupViews();

  }

  public void setupViews(){

  sButton = (Button)findViewById(R.id.button1);

  pButton = (Button)findViewById(R.id.button2);

  sButton.setOnClickListener(this);

  pButton.setOnClickListener(this);

  }

  //Serializeable传递对象的方法

  public void SerializeMethod(){

  Person mPerson = new Person();

  mPerson.setName("frankie");

  mPerson.setAge(25);

  Intent mIntent = new Intent(this,ObjectTranDemo1.class);

  Bundle mBundle = new Bundle();

  mBundle.putSerializable(SER_KEY,mPerson);

  mIntent.putExtras(mBundle);

  startActivity(mIntent);

  }

  //Pacelable传递对象方法

  public void PacelableMethod(){

  Book mBook = new Book();

  mBook.setBookName("Android Tutor");

  mBook.setAuthor("Frankie");

  mBook.setPublishTime(2010);

  Intent mIntent = new Intent(this,ObjectTranDemo2.class);

  Bundle mBundle = new Bundle();

  mBundle.putParcelable(PAR_KEY, mBook);

  mIntent.putExtras(mBundle);

  startActivity(mIntent);

  }

  //铵钮点击事件响应

  public void onClick(View v) {

  if(v == sButton){

  SerializeMethod();

  }else{

  PacelableMethod();

  }

  }

  }

代码
复制代码 代码如下:
package com.test.tutor.objecttran;

import android.app.Activity;

import android.content.Intent;

import android.os.Bundle;

import android.view.View;

import android.view.View.OnClickListener;

import android.widget.Button;

public class ObjectTranDemo extends Activity implements OnClickListener {

private Button sButton,pButton;

public final static String SER_KEY = "com.tutor.objecttran.ser";

public final static String PAR_KEY = "com.tutor.objecttran.par";

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

setContentView(R.layout.main);

setupViews();

}

public void setupViews(){

sButton = (Button)findViewById(R.id.button1);

pButton = (Button)findViewById(R.id.button2);

sButton.setOnClickListener(this);

pButton.setOnClickListener(this);

}

//Serializeable传递对象的方法

public void SerializeMethod(){

Person mPerson = new Person();

mPerson.setName("frankie");

mPerson.setAge(25);

Intent mIntent = new Intent(this,ObjectTranDemo1.class);

Bundle mBundle = new Bundle();

mBundle.putSerializable(SER_KEY,mPerson);

mIntent.putExtras(mBundle);

startActivity(mIntent);

}

//Pacelable传递对象方法

public void PacelableMethod(){

Book mBook = new Book();

mBook.setBookName("Android Tutor");

mBook.setAuthor("Frankie");

mBook.setPublishTime(2010);

Intent mIntent = new Intent(this,ObjectTranDemo2.class);

Bundle mBundle = new Bundle();

mBundle.putParcelable(PAR_KEY, mBook);

mIntent.putExtras(mBundle);

startActivity(mIntent);

}

//铵钮点击事件响应

public void onClick(View v) {

if(v == sButton){

SerializeMethod();

}else{

PacelableMethod();

}

}

}

代码
复制代码 代码如下:
 package com.test.tutor.objecttran;

  import android.app.Activity;
      import android.os.Bundle;
     import android.widget.TextView;

  public class ObjectTranDemo1 extends Activity {

  @Override

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  TextView mTextView = new TextView(this);

  Person mPerson = (Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);

  mTextView.setText("You name is: " + mPerson.getName() + ""+

  "You age is: " + mPerson.getAge());

  setContentView(mTextView);

  }

代码
复制代码 代码如下:
package com.test.tutor.objecttran;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class ObjectTranDemo1 extends Activity {

@Override

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView mTextView = new TextView(this);

Person mPerson = (Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);

mTextView.setText("You name is: " + mPerson.getName() + ""+

"You age is: " + mPerson.getAge());

setContentView(mTextView);

}

}

代码
复制代码 代码如下:
package com.test.tutor.objecttran;

import android.app.Activity;

import android.os.Bundle;

import android.widget.TextView;

public class ObjectTranDemo2 extends Activity {

public void onCreate(Bundle savedInstanceState) {

super.onCreate(savedInstanceState);

TextView mTextView = new TextView(this);

Book mBook = (Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);

mTextView.setText("Book name is: " + mBook.getBookName()+""+

"Author is: " + mBook.getAuthor() + "" +

"PublishTime is: " + mBook.getPublishTime()); setContentView(mTextView);

}

}

复制代码 代码如下:
 package com.test.tutor.objecttran;

  import android.app.Activity;

  import android.os.Bundle;

  import android.widget.TextView;

  public class ObjectTranDemo2 extends Activity {

  public void onCreate(Bundle savedInstanceState) {

  super.onCreate(savedInstanceState);

  TextView mTextView = new TextView(this);

  Book mBook = (Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);

  mTextView.setText("Book name is: " + mBook.getBookName()+""+

  "Author is: " + mBook.getAuthor() + "" +

  "PublishTime is: " + mBook.getPublishTime());

  setContentView(mTextView);

  }

  }

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

代码
复制代码 代码如下:
< ?xml version="1.0" encoding="utf-8"?>

< manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.test.tutor.objecttran"

android:versionCode="1"

android:versionName="1.0">

< application android:icon="@drawable/icon" android:label="@string/app_name">

< activity android:name=".ObjectTranDemo"

android:label="@string/app_name">

< intent-filter>

< action android:name="android.intent.action.MAIN" />

< category android:name="android.intent.category.LAUNCHER" />

< /intent-filter>

< /activity>

< activity android:name=".ObjecttestDemo1">< /activity>

< activity android:name=".ObjecttestDemo2">< /activity>

< /application>

< uses-sdk android:minSdkVersion="7" />

< /manifest>

< ?xml version="1.0" encoding="utf-8"?>

< manifest xmlns:android="http://schemas.android.com/apk/res/android"

package="com.test.tutor.objecttran"

android:versionCode="1"

android:versionName="1.0">

< application android:icon="@drawable/icon" android:label="@string/app_name">

< activity android:name=".ObjectTranDemo"

android:label="@string/app_name">

< intent-filter>

< action android:name="android.intent.action.MAIN" />

< category android:name="android.intent.category.LAUNCHER" />

< /intent-filter>

< /activity>

< activity android:name=".ObjecttestDemo1">< /activity>

< activity android:name=".ObjecttestDemo2">< /activity>

< /application>

< uses-sdk android:minSdkVersion="7" />

< /manifest>

时间: 2024-11-09 05:12:55

Android系列之Intent传递对象的几种实例方法的相关文章

Android系列之Intent传递对象的几种实例方法_Android

在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,以下是我为大家做的一个实例 首先我们建立一个工程项目命名为:ObjectTestDemo 然后我们再修改main.xml布局文件,主要增加2个按钮view plaincopy to

Android开发中Intent传递对象的方法分析_Android

本文实例分析了Android开发中Intent传递对象的方法.分享给大家供大家参考,具体如下: 方法一: 利用方法:public Intent putExtra (String name, Parcelable value)传递一个Parceable的参数,此方法的参数被序列化到内存. 利用方法:public Intent putExtra (String name, Serializable value)传递一个实现了序列化接口类的对象,此方法的实参被序列化到磁盘. 方法二: 把数据存放到应用

Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍_Android

Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大家更容易理解我还是照常写

Android编程使用Intent传递对象的方法分析_Android

本文实例分析了Android编程使用Intent传递对象的方法.分享给大家供大家参考,具体如下: 之前的文章中,介绍过Intent的用法,比如启动活动,发送广播,启发服务等,并且可以使用Intent时传递一些数据.如下代码所示: Intent intent = new Intent(this,SecondActivity.class); intent.putExtra("info", "I am fine"); startActivity(intent); 在传递数

Android编程使用Intent传递对象的方法分析

本文实例分析了Android编程使用Intent传递对象的方法.分享给大家供大家参考,具体如下: 之前的文章中,介绍过Intent的用法,比如启动活动,发送广播,启发服务等,并且可以使用Intent时传递一些数据.如下代码所示: Intent intent = new Intent(this,SecondActivity.class); intent.putExtra("info", "I am fine"); startActivity(intent); 在传递数

Android开发中Intent传递对象的方法分析

本文实例分析了Android开发中Intent传递对象的方法.分享给大家供大家参考,具体如下: 方法一: 利用方法:public Intent putExtra (String name, Parcelable value)传递一个Parceable的参数,此方法的参数被序列化到内存. 利用方法:public Intent putExtra (String name, Serializable value)传递一个实现了序列化接口类的对象,此方法的实参被序列化到磁盘. 方法二: 把数据存放到应用

Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍

Android Intent传递对象的两种方法(Serializable,Parcelable)详细介绍 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大家更容易理解我还是照常写

Android中Intent传递对象的3种方式详解_Android

前言 相信Intent的用法大家已经比较熟悉了,Intent可以用来启动Activity,Service等等,同时我们也可以通过Intent来进行传递数据,当我们使用Intent在Activity 间传递信息时发现putExtra() 方法并不支持自定义对象的传输,下面就来介绍三种解决方式. 一.Serializable 方式 这是最简单的一种方法,因为我们要做的就是让我们自定义的对象实现 Serializable 这个空接口. public class Person implements Se

Android中Intent传递对象的两种方法Serializable,Parcelable

Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者的使用场景和区别: 1)在使用内存的时候,Parcelable比Serializable性能高,所以推荐使用Parcelable. 2)Serializable在序列化的时候会产生大量的临时变量,从而引起频繁的GC. 3)Parcelable不能使用在要将数据存储在磁盘上的情况,因为Parcelab