今天讲一下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. 【leetcode】Convert Sorted Array to Binary Search Tree

    Convert Sorted Array to Binary Search Tree Given an array where elements are sorted in ascending ord ...

  2. cannot use the same dataset for report.dataset and page.dataset

    把page中的dataset中填的数据表删除.(改成not assigned)

  3. ffmpeg-20160517-git-bin

    ESC 退出 0 进度条开关 1 屏幕原始大小 2 屏幕1/2大小 3 屏幕1/3大小 4 屏幕1/4大小 S 下一帧 [ -2秒 ] +2秒 ; -1秒 ' +1秒 下一个帧 -> -5秒 f ...

  4. java入门 第三季2

    java中的字符串 java中的常用类

  5. ABAP 内表的行列转换-发货通知单-打印到Excel里-NEW-(以运单号为单位显示ALV然后保存输出)

    *********************************************************************** * Title           : ZSDF003  ...

  6. Spring@Autowired注解与自动装配

    1   配置文件的方法 我们编写spring 框架的代码时候.一直遵循是这样一个规则:所有在spring中注入的bean 都建议定义成私有的域变量.并且要配套写上 get 和 set方法. Boss ...

  7. window.location.href url含中文服务器收到乱码问题解决

    中文乱码问题 window.location.href url含中文服务器收到乱码问题解决 (1).页面中先对中文进行编码. 如:window.location.href = url+"&a ...

  8. 【mongo】pymongo通过_id删除数据

    来源:http://www.educity.cn/wenda/361741.html pymongo 根据 objectId _id 来删除数据想要删除数据,根据_id ,是最靠谱的,具体方法因为 _ ...

  9. Windows下批处理执行MySQL脚本文件

    转载至http://my.oschina.net/u/660932/blog/117929 一. @echo offSetlocal enabledelayedexpansion::CODER BY ...

  10. nmake geos

    参考:http://blog.sina.com.cn/s/blog_82a2a7d301010f87.html 1 打开visual  studio command prompt 该工具位于 开始程序 ...