今天讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口

第一步:新建一个Android工程命名为IntentDemo

第二步:修改main.xml布局文件

  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 wei'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接口,代码分别如下: 
Person.java

  1. package cn.caiwb.intent;
  2. import java.io.Serializable;
  3. public class Person implements Serializable {
  4. private String name;
  5. private int age;
  6. public String getName() {
  7. return name;
  8. }
  9. public void setName(String name) {
  10. this.name = name;
  11. }
  12. public int getAge() {
  13. return age;
  14. }
  15. public void setAge(int age) {
  16. this.age = age;
  17. }
  18. }

Book.java

  1. package cn.caiwb.intent;
  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<Book> CREATOR = new Creator<Book>() {
  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. }

第四步:修改IntentDemo.java,并且新建两个Activity,一个是IntentDemo1.java,别一个是IntentDemo2.java.分别用来显示Person对像数据,和Book对象数据:,代码分别如下:

IntentDemo.java

  1. package cn.caiwb.intent;
  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 IntentDemo extends Activity implements OnClickListener {
  9. private Button sButton,pButton;
  10. public  final static String SER_KEY = "cn.caiwb.intent.ser";
  11. public  final static String PAR_KEY = "cn.caiwb.intent.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,IntentDemo1.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,IntentDemo2.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. }

IntentDemo1.java

  1. package cn.caiwb.intent;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.TextView;
  5. public class IntentDemo1 extends Activity {
  6. @Override
  7. public void onCreate(Bundle savedInstanceState) {
  8. super.onCreate(savedInstanceState);
  9. TextView mTextView = new TextView(this);
  10. Person mPerson = (Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);
  11. mTextView.setText("You name is: " + mPerson.getName() + "/n"+
  12. "You age is: " + mPerson.getAge());
  13. setContentView(mTextView);
  14. }
  15. }

IntentDemo2.java

  1. package cn.caiwb.intent;
  2. import android.app.Activity;
  3. import android.os.Bundle;
  4. import android.widget.TextView;
  5. public class IntentDemo2 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()+"/n"+
  11. "Author is: " + mBook.getAuthor() + "/n" +
  12. "PublishTime is: " + mBook.getPublishTime());
  13. setContentView(mTextView);
  14. }
  15. }

OK 可以了~

转自:链接

Intent传递对象的两种方法(Serializable,Parcelable) (转)的更多相关文章

  1. Android中Intent传递对象的两种方法(Serializable,Parcelable)

    今天要给大家讲一下Android中 Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是 Bundle.putP ...

  2. [转]Android中Intent传递对象的两种方法(Serializable,Parcelable)

    http://blog.csdn.net/xyz_lmn/article/details/5908355 今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种 ...

  3. Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!

    [转][原文] 大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object); ...

  4. Intent传递对象的两种方法

    Android为intent提供了两种传递对象参数类型的方法 分别需要使实体类实现Serializable接口.Parcelable接口 首先我们要知道,传递对象,需要先将对象序列化 一.那么为什么要 ...

  5. Intent传递对象的几种方式

    原创文章.转载请注明 http://blog.csdn.net/leejizhou/article/details/51105060 李济洲的博客 Intent的使用方法相信你已经比較熟悉了,Inte ...

  6. 读取xml文件转成List<T>对象的两种方法(附源码)

    读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最近项目中用到的读取xml文件并且转成List<T>对象的方法, ...

  7. 取xml文件转成List<T>对象的两种方法

    读取xml文件转成List<T>对象的两种方法(附源码)   读取xml文件转成List<T>对象的两种方法(附源码) 读取xml文件,是项目中经常要用到的,所以就总结一下,最 ...

  8. 在Delphi中使用C++对象(两种方法,但都要改造C++提供的DLL)

    Delphi是市场上最好的RAD工具,但是现在C++占据着主导地位,有时针对一个问题很难找到Delphi或Pascal的解决方案.可是却可能找到了一个相关的C++类.本文描述几种在Delphi代码中使 ...

  9. WCF生成客户端代理对象的两种方法的解释

    最近在封装WCF,有一些很好的实践就记录下来,大家可以放心使用,所有代码都已经调试过.如果有高手可以大家探讨一下. 在WCF中有两种不同的方法可以用于创建客户端服务对象,他们分别为: 1. 代理构造法 ...

随机推荐

  1. WinForm开发框架--动态读取DLL模式

    1\ WinForm开发框架--动态读取DLL模式   http://www.2cto.com/kf/201306/217199.html 2\ 广州爱奇迪     http://www.iqidi. ...

  2. Unity3d 换装Avatar系统

    原理就是用新造的部件和角色的骨骼进行重新对接. demo的使用方法: PartIdx设置要换那个部件[0,4],一共5个部件 EquipIdx设置要更换部件的装备索引[0,1],具体看我的Change ...

  3. K3安装记录

    安装的某些客户端没有客户端管理工具,测试问题所在 K3安装目录选择到D盘就可以,它自动生成kingdee\k3路径

  4. matrix_超时

    问题 H: matrix 时间限制: 1 Sec  内存限制: 256 MB提交: 26  解决: 10[提交][状态][讨论版] 题目描述 给定两个长度为n的整数序列l和t,分别作为n×n矩阵F的第 ...

  5. VC++ 模块与资源分离

    在一些开发过程中,需要模块支持中英文语言切换,比较好的实现方式是从模块中将资源分离出来,做成中英文两个资源dll,根据需要加载不同的dll从而实现切换不同的语言显示. 新建一个资源dll文件,选择Wi ...

  6. 微信video标签全屏无法退出bug 本文系转载

    安卓(android)微信里面video播放视频,会被强制全屏,播放完毕后还有腾讯推荐的视频,非常讨厌..强制被全屏无法解决,但是视频播放完毕后退出播放器可以解决.方法就是视频播放完毕后,用音频aud ...

  7. LeetCode 242 Valid Anagram

    Problem: Given two strings s and t, write a function to determine if t is an anagram of s. For examp ...

  8. supersr--NSURLSessionConfiguration-下载进度

    ////  ViewController.m//  下载进度 // //  Created by Super on 14/7/4. //  Copyright (c) 2014年 iOS. All r ...

  9. ShareSdk使用心得

    1. 微信和朋友圈:分享的时候设置了链接和图片,但就是不显示: 需要指明ShareType为WEB_PAGE 2. 需要完整添加 ShareSdk 的所需要的权限,不然分享闪退,并且不报异常:网络请求 ...

  10. 1 Ionic和Hybird应用介绍

    1.Ionic是什么,它和Angular.Cordova有什么关系? Ionic通过整合各种技术和功能使构建Hybird应用更加快速.容易和美观.Ionic生态系统基于Angular和Cordova, ...