今天讲一下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. java的事务处理

    本文转自http://zhenchengchagangzi.iteye.com/blog/1159493 java的事务处理,如果对数据库进行多次操作,每一次的执行或步骤都是一个事务.如果数据库操作在 ...

  2. svn上传报Authorization failed错误解决办法

    svn上传文件时没有弹出用户登录界面,而是直接报Authorization failed错误.出现该问题基本都是三个配置文件的问题,下面把这个文件列出来 svnserve.conf配置文件中的 [ge ...

  3. 手动编译并运行Java项目的过程

    现在Java开发基本上就是IDE调试,如果跨平台打个jar包过去运行一般就可以了,但是有些情况比如需要引入外部依赖的时候,这个时候是不能直接运行的,还需要引入一些外部的参数,并不是简单的javac和j ...

  4. ABAP 行列稳定刷新语句

    DATA stbl TYPE lvc_s_stbl. stbl-row = 'X'." 基于行的稳定刷新         stbl-col = 'X'." 基于列稳定刷新      ...

  5. codeforces 492C. Vanya and Exams 解题报告

    题目链接:http://codeforces.com/problemset/problem/492/C 题目意思:给出 3 个整数:n,  r,  avg.然后有 n 行,每行有两个数:第 i 行有 ...

  6. 【hadoop2.6.0】数据丢失问题解决

    想自己走一遍从代码到运行的流程,结果各种错,郁闷啊. 问题① http://localhost:50070/ 里面一进去就告诉我块丢了.... 解决: bin/hadoop fsck -delete ...

  7. poj 3735 Training little cats 矩阵快速幂+稀疏矩阵乘法优化

    题目链接 题意:有n个猫,开始的时候每个猫都没有坚果,进行k次操作,g x表示给第x个猫一个坚果,e x表示第x个猫吃掉所有坚果,s x y表示第x个猫和第y个猫交换所有坚果,将k次操作重复进行m轮, ...

  8. IOS - delegate为什么不使用retain

    循环引用所有的引用计数系统,都存在循环应用的问题.例如下面的引用关系: 对象a创建并引用了对象b.对象b创建并引用了对象c.对象c创建并引用了对象b. 这时候b和c的引用计数分别是2和1.当a不再使用 ...

  9. Java异常题库

    一.填空题 __异常处理__机制是一种非常有用的辅助性程序设计方法.采用这种方法可以使得在程序设计时将程序的正常流程与错误处理分开,有利于代码的编写和维护. 在Java异常处理中可以使用多个catch ...

  10. python基础——map/reduce

    python基础——map/reduce Python内建了map()和reduce()函数. 如果你读过Google的那篇大名鼎鼎的论文“MapReduce: Simplified Data Pro ...