Android系列之Intent传递对象的两种方法

来源:互联网 发布:win10 自动优化 编辑:程序博客网 时间:2024/05/16 11:40

原文地址:http://www.apkbus.com/forum.php?mod=viewthread&tid=914&highlight=Android%E7%B3%BB%E5%88%97%E4%B9%8B 

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

       首先我们建立一个工程项目命名为:ObjectTestDemo。然后我们再修改main.xml布局文件,主要增加2个按钮。

Java代码:

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

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

  3. android:orientation="vertical"

  4. android:layout_width="fill_parent"

  5. android:layout_height="fill_parent"

  6. >

  7. < TextView

  8. android:layout_width="fill_parent"

  9. android:layout_height="wrap_content"

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

  11. />

  12. < Button

  13. android:id="@+id/button1"

  14. android:layout_width="fill_parent"

  15. android:layout_height="wrap_content"

  16. android:text="Serializable"

  17. />

  18. < Button

  19. android:id="@+id/button2"

  20. android:layout_width="fill_parent"

  21. android:layout_height="wrap_content"

  22. android:text="Parcelable"

  23. />

  24. < /LinearLayout>
复制代码
接下来我们开始对工程进行实现,分别建立Person.java实现Serializable接口,另一个Book.java实现Parcelable接口:

Java代码:

  1. package eoe.test.objecttran;

  2. import java.io.Serializable;

  3. public class Person implements Serializable {

  4. private static final long serialVersionUID = -7060210544600464481L;

  5. private String name;

  6. private int age;

  7. public String getName() {

  8. return name;

  9. }

  10. public void setName(String name) {

  11. this.name = name;

  12. }

  13. public int getAge() {

  14. return age;

  15. }

  16. public void setAge(int age) {

  17. this.age = age;

  18. }

  19. }
复制代码
Java代码:

  1. package eoe.test.tutor.objecttran;


  2. import android.os.Parcel;
  3. import android.os.Parcelable;

  4. public class Book implements Parcelable {

  5. private String bookName;

  6. private String author;

  7. private int publishTime;

  8. public String getBookName() {

  9. return bookName;

  10. }

  11. public void setBookName(String bookName) {

  12. this.bookName = bookName;

  13. }

  14. public String getAuthor() {

  15. return author;

  16. }

  17. public void setAuthor(String author) {

  18. this.author = author;

  19. }

  20. public int getPublishTime() {

  21. return publishTime;

  22. }

  23. public void setPublishTime(int publishTime) {

  24. this.publishTime = publishTime;

  25. }

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

  27. public Book createFromParcel(Parcel source) {

  28. Book mBook = new Book();

  29. mBook.bookName = source.readString();

  30. mBook.author = source.readString();

  31. mBook.publishTime = source.readInt();

  32. return mBook;

  33. }

  34. public Book[] newArray(int size) {

  35. return new Book[size];

  36. }

  37. };

  38. public int describeContents() {

  39. return 0;

  40. }

  41. public void writeToParcel(Parcel parcel, int flags) {

  42. parcel.writeString(bookName);

  43. parcel.writeString(author);

  44. parcel.writeInt(publishTime);

  45. }

  46. }
复制代码

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

Java代码:

  1. package eoe.test.tutor.objecttran;

  2. import android.app.Activity;
  3. import android.content.Intent;
  4. import android.os.Bundle;
  5. import android.view.View;
  6. import android.view.View.OnClickListener;
  7. import android.widget.Button;

  8. public class ObjectTranDemo extends Activity implements OnClickListener {

  9. private Button sButton,pButton;

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

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

  12. public void onCreate(Bundle savedInstanceState) {

  13. super.onCreate(savedInstanceState);

  14. setContentView(R.layout.main);

  15. setupViews();

  16. }


  17. public void setupViews(){

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

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

  20. sButton.setOnClickListener(this);

  21. pButton.setOnClickListener(this);

  22. }

  23. //Serializeable传递对象的方法

  24. public void SerializeMethod(){

  25. Person mPerson = new Person();

  26. mPerson.setName("frankie");

  27. mPerson.setAge(25);

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

  29. Bundle mBundle = new Bundle();

  30. mBundle.putSerializable(SER_KEY,mPerson);

  31. mIntent.putExtras(mBundle);

  32. startActivity(mIntent);

  33. }

  34. //Pacelable传递对象方法

  35. public void PacelableMethod(){

  36. Book mBook = new Book();

  37. mBook.setBookName("Android Tutor");

  38. mBook.setAuthor("Frankie");

  39. mBook.setPublishTime(2010);

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

  41. Bundle mBundle = new Bundle();

  42. mBundle.putParcelable(PAR_KEY, mBook);

  43. mIntent.putExtras(mBundle);

  44. startActivity(mIntent);

  45. }

  46. //铵钮点击事件响应

  47. public void onClick(View v) {

  48. if(v == sButton){

  49. SerializeMethod();

  50. }else{

  51. PacelableMethod();

  52. }

  53. }
  54. }
复制代码

Java代码:

  1. package com.test.tutor.objecttran;

  2. import android.app.Activity;
  3. import android.os.Bundle; 
  4. import android.widget.TextView;

  5. public class ObjectTranDemo1 extends Activity {

  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {

  8. super.onCreate(savedInstanceState);

  9. TextView mTextView = new TextView(this);

  10. Person m Person= (Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);

  11. mTextView.setText("You name is: " + mPerson.getName() + ""+
  12. "You age is: " + mPerson.getAge());

  13. setContentView(mTextView);

  14. }

  15. }
复制代码
Java代码:

  1. package com.test.tutor.objecttran;

  2. import android.app.Activity;
  3. import android.os.Bundle;

  4. import android.widget.TextView;

  5. public class ObjectTranDemo2 extends Activity {

  6. public void onCreate(Bundle savedInstanceState) {

  7. super.onCreate(savedInstanceState);

  8. TextView mTextView = new TextView(this);

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

  10. mTextView.setText("Book name is: " + mBook.getBookName()+""+
  11. "Author is: " + mBook.getAuthor() + "" +
  12. "PublishTime is: " + mBook.getPublishTime()); setContentView(mTextView);

  13. }

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

Java代码:

  1. < ?xml version="1.0" encoding="utf-8"?>
  2. < manifest xmlns:android="http://schemas.android.com/apk/res/android"

  3. package="eoe.test.tutor.objecttran"

  4. android:versionCode="1"

  5. android:versionName="1.0">

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

  7. < activity android:name=".ObjectTranDemo"

  8. android:label="@string/app_name">

  9. < intent-filter>

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

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

  12. < /intent-filter>

  13. < /activity>

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

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

  16. < /application>

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

  18. < /manifest>
原创粉丝点击
热门问题 老师的惩罚 人脸识别 我在镇武司摸鱼那些年 重生之率土为王 我在大康的咸鱼生活 盘龙之生命进化 天生仙种 凡人之先天五行 春回大明朝 姑娘不必设防,我是瞎子 调好的车漆时间长了有点稠怎么办 下滤鱼缸下水管声音大怎么办 家里水管不开水龙头就总是响怎么办 生完儿子后腹股沟特黑怎么办 因盗窃罪出狱数额较大还不起怎么办 司法拍卖房原房主拒绝搬离怎么办 wps卡了没反应没有保存怎么办 微信扫描支付环境有风险怎么办 手机安装东西突然要扫描很久怎么办 我惹朋友真的很生气了怎么办 买了保险后又犯杀人罪 保险怎么办 水瓶盖了拧歪了打不开怎么办 刚买的老干妈盖子打不开怎么办? 门冬胰岛素的盖子转不动怎么办 diy做的蝴蝶结上的歪了怎么办 电脑显示电源已接通未充电怎么办 微博账号被锁无法登录怎么办 惠头条登录过两个账号被锁了怎么办 被两个月大的小狗咬破皮了怎么办 阿根廷认证出口声明成分错了怎么办 花盆土里面有白色的虫子怎么办 刚买的月季苗叶子黄了怎么办? 月季新出的芽中间黑了怎么办 龙须的茎被折断了怎么办? 扦插的月季跟部总发黑怎么办 用过皮炎平后的黑印怎么办 兰花现在不管王莽岭了员工怎么办 家里很穷妈妈还不知道省钱怎么办 执业医师电子注册信息弄错了怎么办 开过花后的百合花根怎么办 荔枝吃起来有股保鲜剂的味道怎么办 厂停产不宣布倒闭又不赔钱怎么办 二审判决生效后发现判错了怎么办 应收账款质押后附属的担保怎么办 房子借款合同和抵押合同丢了怎么办 离婚判决不服上诉期限过了怎么办 法院判完执行厅不执行怎么办 民事判决书下来又有新的证据怎么办 民事判决书下来欠钱没钱法院怎么办 法院笔录没看清就签字了怎么办 有人模仿自己笔迹在法院签字怎么办