Android:通过Intent传递对象、Parcelable
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相关推荐
- android 使用intent传递对象,Android--Intent传递对象
Intent 传递对象通常有两种实现方式,Serializable 和 Parcelable: 一.Serializable:序列化,表示将一个对象转换成可存储或可传输的状态,序列化后的对象可以在网络 ...
- android 传递接口对象吗,android中Intent传递对象,需要实现Serializable接口或者Parcelable接口...
Intent传递对象,有两种方法 1. 实现Serializable接口 类要生成序列化ID,并且不能是内部类 2. 实现Parcelable接口 参照Parcelable的doc文档 实现Seria ...
- Android中Intent传递对象的两种方法(Serializable,Parcelable)
这篇文章转自博客园 Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putPa ...
- java intent 传递集合对象_Android系列之Intent传递对象的几种实例方法
在Android中intent传递对象主要有2种方式分别是,Bundle.putSerializable(Key,Object)和Bundle.putParcelable(Key, Object);当 ...
- Android中Intent传递Object和ArrayListObject对象---笔记
首先看一下Intent的官方的API. 传递一些基本类型数据的方法如下: putExtra(String name, int value) putExtra(String name, String v ...
- android集合方法,android中intent传递list或者对象的方法
本文实例讲述了android中intent传递list或者对象的方法.分享给大家供大家参考.具体实现方法如下: 方法一: 如果单纯的传递List 或者List的话 就可以直接使用 代码如下: inte ...
- putextra 传递对象_intent.putextra用法 使用Intent传递对象的两种方式 - 电脑常识 - 服务器之家...
intent.putextra用法 使用Intent传递对象的两种方式 发布时间:2017-05-22 来源:服务器之家 Intent 的用法相信你已经比较熟悉了,我们可以借助它来启动活动.发送广播. ...
- android java 实体类 object变量 保存_Android中Intent传递对象的两种方法Serializable,Parcelable...
Android中的传递有两个方法,一个是Serializable,另一个是Parcelable. Serializable是J2SE本身就支持的.而Parcelable是Android所特有的. 二者 ...
- android中返回刷新,Android intent 传递对象以及返回刷新
之前项目需要,找过这方面知识.所以今天也总结一下.大家都知道activity跳转用intent,Android的当前页面跳转到新的页面.当然跳转的同时常常要携带数据或者对象.那我下面就说说跳转带对象吧 ...
- Intent传递对象
Serializable对象的传递 Parcelable对象的传递 Serializable对象的传递 Serializable即序列化,将对象转化成可存储与传输状态. public class St ...
最新文章
- Nature会议:驾驭植物微生物组(21年10月22-24,在线,优惠截止9月24日)
- 智慧城市产业图谱(2020年)
- 分布式WebSocket架构
- redis集群之主从架构
- IDEA中Spring Boot+MyBaits提示Invalid bound statement (not found)错误
- bashrc, bash_profile etc;
- E. Anfisa the Monkey
- c语言与程序设计读后感,《高质量c语言编程》读后感
- OpenStack Compute(Nova)功能分析
- linux spi驱动开发学习-----spidev.c和spi test app
- Java修改带回显吗_修改的是根据自定义标签进行处理回显
- 世界各国国家代码简称 - 备用
- 去除右键菜单中图形属性、图形选项
- chm打不开解决办法
- 产业分析:2022南京市产业全景
- 任务管理器不显示磁盘
- Error: Cannot find module 'chalk'
- vue axios常用写法
- PLSQL入门与精通(第72章:LOGOFF触发器)
- 腾讯云主机Ubuntu之服务器环境搭建以及宝塔面板安装
热门文章
- JMETER 线程组
- 案例1_公司简介(修改)
- 02-01 Python 安装与pip
- 01-07 Linux三剑客-grep
- mongodb默认的用户名密码_Windows下MongoDB设置用户、密码
- 小米盒子4用u盘导入html文件格式,最新图文教程:小米盒子怎么用U盘安装第三方应用...
- 前端盒模型的概念和文本溢出解决办法
- 好的 Web 前端年薪会有多少?
- python爬虫怎么挣钱_买不到口罩怎么办?Python爬虫帮你时刻盯着自动下单!| 原力计划...
- as3 转义html,html和xml中的转义字符在Flash as3中的用法浅析