Activity之间传递对象
来源:互联网 发布:麦田怪圈知乎 编辑:程序博客网 时间:2024/05/01 05:21
Activity之间传递对象
声明:如果对象要被传递,那么该对象必须通过实现Serialable接口或者Parcelable接口实现对象的序列化。
Serialable为java提供对象序列化的接口,效率低
Parcelable为android提供对象序列化的接口,移动平台专用,效率高
1、传递List《String》
传递List
ArrayList<String> list = new ArrayList<>();intent.putStringArrayListExtra("key",list);
接收List
intent.getStringArrayListExtra("key");
2、传递List《Integer》
传递List
ArrayList<Integer> list = new ArrayList<>();intent.putIntegerArrayListExtra("key",list);
接收List
intent.getIntegerArrayListExtra("key");
3、传递Object
3.1实现Serialable接口
前提:Object要是先Serialbale接口用Serializable方式传递Object的语法:bundle.putSerializable(key,object);用Serializable方式接收Object的语法:getIntent().getSerializableExtra(key);
3.2实现Parcelable接口
前提:Object需要实现Parcelable接口用Parcelable方式传递Object的语法:bundle.putParcelable(key,object);用Parcelable方式接收Object的语法:getIntent().getParcelableExtra(key);
实现Parcelable接口的类比较复杂,Parcelable是个什么东西呢?
Android提供了一种新的类型:Parcel,被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以外,只有实现了Parcelable接口的类才能被放入Parcel中。实现Parcelable接口需要实现三个方法: 1)writeToParcel方法。该方法将类的数据写入外部提供的Parcel中。 2)describeContents方法。直接返回0就可以。 3)静态的Parcelable.Creator<T>接口,本接口有两个方法:createFromParcel(Parcel in) 实现从in中创建出类的实例的功能。 newArray(int size) 创建一个类型为T,长度为size的数组, returnnew T[size];即可。本方法是供外部类反序列化本类数组使用。
实现Parcelable接口[demo]示例
package com.wirelessqa.testintent;import android.os.Parcel;import android.os.Parcelable;/** * Object需要实现Parcelable接口 * @author XF 2016.10.25 */public class ParInfo implements Parcelable{ private String name; private String website; private String weibo; public ParInfo(){ } public ParInfo(String name, String website, String weibo){ this.name = name; this.website = website; this.weibo = weibo; } public String getName() { return name; } public void setName(String name) { this.name = name; } public String getWebsite() { return website; } public void setWebsite(String website) { this.website = website; } public String getWeibo() { return weibo; } public void setWeibo(String weibo) { this.weibo = weibo; } @Override public int describeContents() { // TODO Auto-generated method stub return 0; } //该方法将类的数据写入外部提供的Parcel中。 @Override public void writeToParcel(Parcel dest, int flags) { dest.writeString(name); dest.writeString(website); dest.writeString(weibo); } public static final Parcelable.Creator<ParInfo> CREATOR = new Creator<ParInfo>() { //实现从source中创建出类的实例的功能 @Override public ParInfo createFromParcel(Parcel source) { ParInfo parInfo = new ParInfo(); parInfo.name = source.readString(); parInfo.website= source.readString(); parInfo.weibo = source.readString(); return parInfo; } //创建一个类型为T,长度为size的数组 @Override public ParInfo[] newArray(int size) { return new ParInfo[size]; } }; }
4、传递List《Object》
传递
ArrayList<SerInfo> listObj = new ArrayList<SerInfo>(); SerInfo serInfo1 = new SerInfo(name, website, weibo); SerInfo serInfo2 = new SerInfo(name, website, weibo); listObj.add(serInfo1); listObj.add(serInfo2); Intent intent = new Intent(); intent.setClass(MainActivity.this, ResultActivity.class); intent.putExtra("listobj", (Serializable) listObj); startActivity(intent);
接收
ArrayList<SerInfo> listObj = (ArrayList<SerInfo>) getIntent().getSerializableExtra("listobj");
0 0
- activity之间传递对象
- activity之间传递对象
- Activity之间传递对象
- Activity之间传递类对象
- Activity之间的 对象传递
- Activity之间传递类对象
- Activity之间传递类对象
- Activity之间传递类对象
- Android Activity 之间传递对象
- android Activity之间传递对象
- Activity之间传递类对象
- Activity之间传递类对象
- Activity之间传递类对象
- Activity之间传递对象数组
- Activity之间传递 List对象
- Activity之间传递类对象
- Activity之间的 对象传递
- 两个Activity之间传递对象
- MySQL数据库随机取某个字段的值
- 第29题 两个整型相除
- 网易真题之暗黑字符串
- 网易真题之回文序列
- 网易真题之最大奇约数
- Activity之间传递对象
- 20160914
- (一)java数据类型图
- 百度真题之城市规划(连通域数目)
- ES6 利用 for...of yield生成斐波那契数列
- 百度真题之走迷宫
- 第1章 概述
- android-5.0 sensor框架简介
- 图论之两点间最短距离