//发送数据
Intent intent = new
Intent(activity01.this,activity02.class);
intent.putExtra("key",ob); //ob是实现了上面两个接口其中一个的类的对象
this.startActivity(intent);
//接收数据
Intent intent =
this.getIntent();
//如果发送的数据是实现了Serializable接口的,
Object ob =
intent.getSerializableExtra("key");
//如果发送的数据是实现了Parcelable接口的,
Object ob =
intent.getParcelableExtra("key");
接下来就来具体说说怎么实现Parcelable,Serializable接口,
假设我们现在有这样一个简单的类,
class
MyClass{
String str;
int
data;
public void setStr(String
str){
this.str = str;
}
public String
getStr(){
return str;
}
public int getData() {
return
data;
}
public void setData(int data)
{
this.data =
data;
}
}
我们想让它在Activity之间传递,可以让它先实现Parcelable或Serializable接口,然后它就可以在Activity之间传递了。
一.实现Parcelable接口
class MyClass implements Parcelable{
String
str;
int data;
public
void setStr(String str){
this.str =
str;
}
public String
getStr(){
return str;
}
public int getData() {
return
data;
}
public void setData(int data)
{
this.data = data;
}
//需要实现的Parcelable接口方法
public int describeContents()
{
// TODO Auto-generated method stub
return
0;
}
//需要实现的Parcelable接口方法
public void
writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated
method stub
//写入数据
dest.writeString(str);
dest.writeInt(data);
}
//除此之外,我们还需要定义一个声明了Parcelable.Creator接口的静态变量,
public static final
Parcelable.Creator<MyClass>
CREATOR
= new Parcelable.Creator<MMyClass>() {
//需要实现的Creator接口方法
public
MyClass createFromParcel(Parcel source) {
//获取数据
MyClass myClass = new MyClass();
myClass.str = source.readString();
myClass.data
=
source.readInt();
return myClass;
}
//需要实现的Creator接口方法
public
MyClass[] newArray(int size)
{
return new
MyClass[size];
}
};
这样总算实现了Parcelable接口了,这个类的对象也可以用来传递了,麻烦是麻烦了点。
二.实现Serializable接口
这个相对前面那种方法来说,非常容易实现。
class MyClass implements
Serializable{
String
str;
int data;
public
void setStr(String str){
this.str =
str;
}
public String
getStr(){
return str;
}
public int getData() {
return
data;
}
public void setData(int data)
{
this.data = data;
}
这样就ok了,是不是很简单,不过用eclipse开发时,会提示警告,我们可以让eclipse帮我们生成一个序列号,
点击黄色警告,然后点击Add generated serial versionID
就可以自动生成一个序列号,
private static final long
serialVersionUID = -9048604587123848184L;
相比较Parcelable接口而言,Serializable简单太多了。
有些android提供的对象,例如Bitmap,它是已经实现了Parcelable接口的类,我们要传递它就不用让它实现接口了,直接就可以使用了,不过要传递Bitmap数组的话,我们要一个一个元素的强制转换。
1.传递单个Bitmap
//发送Bitmap
Intent intent = new Intent(this,XXX.class);
inent.putExtra("key",bitmap);
this.startActivity(intent);
//接收Bitmap
Intent
intent = this.getIntent();
Bitmap bitmap = intent.getSerializableExtra("key");
2.传递Bitmap数组
//发送Bitmap数组
Intent intent = new Intent(this,XXX.class);
inent.putExtra("key",bitmaps);
this.startActivity(intent);
//接收Bitmap数组
Intent
intent = this.getIntent();
Parcelable[]
parcel = intent.getParcelableArrayExtra("key");
Bitmap[]
bitmaps = new Bitmap[parcel.length];
for(int
i=0;i<parcel.length;i++){
bitmaps[i] =
(Bitmap)parcel[i];
}
其它实现了前面两个接口其中之一的对象或者数组都可以采取上面的方式进行发送。
相关推荐
安卓开发-Activity间数据传递和回传
两个Activity之间传递参数的代码
Android-Activity之间数据传递的多种方式. 在不同模块(如Activity)间经常会有各种各样的数据需要相互传递,我把常用的几种 方法都收集到了一起。它们各有利弊,有各自己的应用场景。
Android PopupWindow与Activity之间的数据传递
在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在...
利用广播Broadcast Receiver,在2个不同的Activity传递数据
源码包括activity之间数据传递的三种方法,参考博客:http://blog.csdn.net/u010963246/article/details/46722887
Activity之间的数据传递 简单功能的实现 对新手有所帮助
Activity review activity之间的数据传递
activity与activity利用接口相互传递数据,超简单
activity间的数据传递
一个简单介绍Activity两个界面直接数据传递的demo.
资源包括如何在一个activity A里激活另一个activity B。 然后在两个activity之间用handler传输数据。在activity A里定义全局变量handler,用sendMessage来发数据,在handler里数据以消息队列的方式发送。
Activity之间传递数据
Android例子源码Activity间的数据传递
fragment与activity之间相互通信,一般有两种方法,接口方式和bundle方式
Activity间的数据传递:这里面讲了一个App(注册界面实例)一般都是又多个Activity构成的,这就涉及到了多个Activity间数据传递的问题了。
这里简单描述了以下Activity使用Bundle向Fragment传递数据
android Activity之间数据传递 Parcelable和Serializable接口的使用的具体实例代码,详情请看>http://blog.csdn.net/js931178805/article/details/8268144
安卓中Activity中的参数传递至Activity中的Fragment中,参数的传递,详细说明查看博客地址:http://blog.csdn.net/Sunjianhua360/article/details/51189086