1.对要传递的对象类型实现Parcelable:

public class User implements Parcelable//对象必须实现Parcelable接口才可以putExtra(或者序列化)
{String name;String psw;public User(String name, String psw){super();this.name = name;this.psw = psw;}@Overridepublic String toString(){return "User [name=" + name + ", psw=" + psw + "]";}@Overridepublic int describeContents(){return 0;}@Overridepublic void writeToParcel(Parcel dest, int flags)//将属性写入Parcel对象{dest.writeString(name);dest.writeString(psw);}public static final Parcelable.Creator<User> CREATOR = new Parcelable.Creator<User>(){public User createFromParcel(Parcel in){return new User(in);//创建一个有参构造函数}public User[] newArray(int size){return new User[size];}};public User(Parcel in)//根据写入的顺序依次读取{name = in.readString();psw = in.readString();}
}

2.第一个activity传递user对象:

public class MainActivity extends Activity
{private EditText editText1;private EditText editText2;@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_main);editText1 = (EditText) findViewById(R.id.editText1);editText2 = (EditText) findViewById(R.id.editText2);findViewById(R.id.button1).setOnClickListener(new OnClickListener(){@Overridepublic void onClick(View v){String namestr = editText1.getText().toString();String pswstr = editText2.getText().toString();User user = new User(namestr, pswstr);Intent intent = new Intent(MainActivity.this, NextActivity.class);intent.putExtra("user", user);//传入对象,对象类必须实现Parcelable或者序列化startActivity(intent);}});}@Overridepublic boolean onCreateOptionsMenu(Menu menu){getMenuInflater().inflate(R.menu.activity_main, menu);return true;}
}

3.第二个activity接收user对象:

public class NextActivity extends Activity
{@Overrideprotected void onCreate(Bundle savedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.activity_next);TextView textView = (TextView) findViewById(R.id.textView1);Intent intent = getIntent();User user = intent.getParcelableExtra("user");//得到一个对象textView.setText(user.toString());}@Overridepublic boolean onCreateOptionsMenu(Menu menu){getMenuInflater().inflate(R.menu.activity_next, menu);return true;}
}

其他笔记:

1.带有数组类型属性的类

    @Overridepublic void writeToParcel(Parcel dest, int flags){dest.writeStringList(CompanyIntroList);}public EstateInfoJson(Parcel in){CompanyIntroList = new ArrayList<String>();in.readStringList(CompanyIntroList);}

2.带有其他类的属性

    public EstateParamJson EstateParam;@Overridepublic void writeToParcel(Parcel dest, int flags){dest.writeValue(EstateParam);}@Overridepublic EstateInfoJson(Parcel in){EstateParam = (EstateParamJson) in.readValue(EstateParamJson.class.getClassLoader());}

3.带有其他类的数组类型的属性

    public ArrayList<PicJson> shiJing;//实景图@Overridepublic void writeToParcel(Parcel dest, int flags){dest.writeTypedList(shiJing);}public GalleryJson(Parcel in){shiJing = new ArrayList<PicJson>();in.readTypedList(shiJing, PicJson.CREATOR);}

4.带有子类父类的情况:

public abstract class A implements Parcelable {  private int a;  protected A(int a) {  this.a = a;  }  public void writeToParcel(Parcel out, int flags) {  out.writeInt(a);  }  protected A(Parcel in) {  a = in.readInt();  }
}  public class B extends A {  private int b;  public B(int a, int b) {  super(a);  this.b = b;  }  public static final Parcelable.Creator<B> CREATOR = new Parcelable.Creator<B>() {  public B createFromParcel(Parcel in) {  return new B(in);  }  public B[] newArray(int size) {  return new B[size];  }  };  public int describeContents() {  return 0;  }  public void writeToParcel(Parcel out, int flags) {  super.writeToParcel(out, flags);  out.writeInt(b);  }  private B(Parcel in) {  super(in);  b = in.readInt();  }
}

参考:http://dev.wo.com.cn/docportal/doc_queryMdocDetail.action?mdoc.docindex=6301

转载于:https://blog.51cto.com/glblong/1217554

Android:通过Intent传递对象、Parcelable相关推荐

  1. android 使用intent传递对象,Android--Intent传递对象

    Intent 传递对象通常有两种实现方式,Serializable 和 Parcelable: 一.Serializable:序列化,表示将一个对象转换成可存储或可传输的状态,序列化后的对象可以在网络 ...

  2. android 传递接口对象吗,android中Intent传递对象,需要实现Serializable接口或者Parcelable接口...

    Intent传递对象,有两种方法 1. 实现Serializable接口 类要生成序列化ID,并且不能是内部类 2. 实现Parcelable接口 参照Parcelable的doc文档 实现Seria ...

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

    这篇文章转自博客园 Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putPa ...

  4. java intent 传递集合对象_Android系列之Intent传递对象的几种实例方法

    在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当 ...

  5. Android中Intent传递Object和ArrayListObject对象---笔记

    首先看一下Intent的官方的API. 传递一些基本类型数据的方法如下: putExtra(String name, int value) putExtra(String name, String v ...

  6. android集合方法,android中intent传递list或者对象的方法

    本文实例讲述了android中intent传递list或者对象的方法.分享给大家供大家参考.具体实现方法如下: 方法一: 如果单纯的传递List 或者List的话 就可以直接使用 代码如下: inte ...

  7. putextra 传递对象_intent.putextra用法 使用Intent传递对象的两种方式 - 电脑常识 - 服务器之家...

    intent.putextra用法 使用Intent传递对象的两种方式 发布时间:2017-05-22 来源:服务器之家 Intent 的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播. ...

  8. android java 实体类 object变量 保存_Android中Intent传递对象的两种方法Serializable,Parcelable...

    Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者 ...

  9. android中返回刷新,Android intent 传递对象以及返回刷新

    之前项目需要,找过这方面知识.所以今天也总结一下.大家都知道activity跳转用intent,Android的当前页面跳转到新的页面.当然跳转的同时常常要携带数据或者对象.那我下面就说说跳转带对象吧 ...

  10. Intent传递对象

    Serializable对象的传递 Parcelable对象的传递 Serializable对象的传递 Serializable即序列化,将对象转化成可存储与传输状态. public class St ...

最新文章

  1. Nature会议:驾驭植物微生物组(21年10月22-24,在线,优惠截止9月24日)
  2. 智慧城市产业图谱(2020年)
  3. 分布式WebSocket架构
  4. redis集群之主从架构
  5. IDEA中Spring Boot+MyBaits提示Invalid bound statement (not found)错误
  6. bashrc, bash_profile etc;
  7. E. Anfisa the Monkey
  8. c语言与程序设计读后感,《高质量c语言编程》读后感
  9. OpenStack Compute(Nova)功能分析
  10. linux spi驱动开发学习-----spidev.c和spi test app
  11. Java修改带回显吗_修改的是根据自定义标签进行处理回显
  12. 世界各国国家代码简称 - 备用
  13. 去除右键菜单中图形属性、图形选项
  14. chm打不开解决办法
  15. 产业分析:2022南京市产业全景
  16. 任务管理器不显示磁盘
  17. Error: Cannot find module 'chalk'
  18. vue axios常用写法
  19. PLSQL入门与精通(第72章:LOGOFF触发器)
  20. 腾讯云主机Ubuntu之服务器环境搭建以及宝塔面板安装

热门文章

  1. JMETER 线程组
  2. 案例1_公司简介(修改)
  3. 02-01 Python 安装与pip
  4. 01-07 Linux三剑客-grep
  5. mongodb默认的用户名密码_Windows下MongoDB设置用户、密码
  6. 小米盒子4用u盘导入html文件格式,最新图文教程:小米盒子怎么用U盘安装第三方应用...
  7. 前端盒模型的概念和文本溢出解决办法
  8. 好的 Web 前端年薪会有多少?
  9. python爬虫怎么挣钱_买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划...
  10. as3 转义html,html和xml中的转义字符在Flash as3中的用法浅析