`
老七的米店
  • 浏览: 48852 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

Activity中的数据传递

 
阅读更多
在Activity中传递数据,一般而言,传递一些简单的类型是比较容易的,如int , String等,但是很多时候我们要传递的是往往是一个复杂的对象,这时候我们可以让这个对象implements Parcelable,或者implements Serializable,实现这两个接口,就可以通过下面的代码片段在Activity之间进行传递了,

//发送数据

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利用接口相互传递数据

    然后,在源Activity中实现该接口,并在需要触发数据传递时调用相应的方法。例如,当用户点击一个按钮时: ```java public class ActivityA extends AppCompatActivity implements DataCallback { // ... @...

    Android-Activity之间数据传递的多种方式

    在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是十分常见的操作。本文将详细介绍Android中Activity之间数据传递的多种方式及其适用场景。 一、Intent传递数据 Intent是Android系统中...

    Fragment与Activity传递数据

    4. **调用接口方法**:在需要传递数据的时机,Fragment调用接口中的方法,将数据作为参数传递给Activity。 例如: ```java public interface OnDataPassListener { void onDataPass(String data); } public class...

    两个Activity之间传递参数的代码

    在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本篇文章将详细讲解如何在Android的两个Activity之间传递参数,并通过给出的`LoginActivity.java`和`MainActivity.java...

    安卓开发-Activity间数据传递和回传

    在安卓应用开发过程中,经常需要在多个`Activity`之间进行数据传递。这种交互对于实现复杂的应用逻辑至关重要,例如用户登录验证、表单填写等场景。本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据...

    Android PopupWindow与Activity之间的数据传递.zip

    下面将详细阐述如何在Android中进行PopupWindow与Activity的数据传递。 首先,理解PopupWindow的基本概念。PopupWindow是Android SDK提供的一种轻量级弹出窗口,它可以显示在屏幕任意位置,并且可以设置背景透明度...

    Activity间图片传递(3种方法)

    在Android开发中,Activity间的通信是至关重要的,其中包括数据的传递。当涉及到图片这种大对象时,我们需要采取一些特殊的方法来高效地进行传递。本文将详细介绍三种在Activity间传递图片的方法。 1. 资源ID间传递...

    Fragment与Activity使用Bundle传递数据

    2. **设置Intent或Arguments**:如果从Activity到Fragment传递数据,需要在创建Fragment实例时将Bundle作为参数传递给Fragment的构造函数,或者调用`setArguments(Bundle)`方法。如果是Activity间的跳转,将Bundle...

    activity值传递

    在提供的压缩包文件"intent"中,可能包含了如何创建Intent、传递数据以及处理返回结果的相关代码示例,通过学习和理解这些代码,你可以更好地掌握Activity之间的值传递技术。在实际开发中,熟练运用这些技巧可以提高...

    Activity review activity之间的数据传递

    在Android应用开发中,Activity是用户界面的基本单元,它们之间常常需要进行数据的传递。"Activity review activity之间的数据传递"这个主题聚焦于如何在不同的Activity之间有效地传递信息。理解并熟练掌握这一技能...

    利用广播Broadcast Receiver,在2个不同的Activity传递数据

    总结,BroadcastReceiver是Android系统中实现组件间通信的重要工具,特别适用于在Activity之间传递数据。通过创建BroadcastReceiver,注册它,发送Broadcast,以及在接收端处理数据,我们可以轻松地在两个不同的...

    Activity传递数据到另一个Activity并显示

    在数据传递中,`Intent`主要用来创建一个从一个`Activity`到另一个`Activity`的通道。 ```java // 创建一个新的Intent Intent intent = new Intent(currentActivity, TargetActivity.class); ``` ### 2. 通过`...

    activity中图片传递

    在Android开发过程中,经常会遇到需要在不同的`Activity`之间传递数据的需求,例如用户从一个页面选择一张图片后,在另一个页面显示这张图片等场景。本篇文章将详细探讨如何在两个`Activity`(即`MainActivity`与`...

    两个activity之间的数据传递

    在Android应用开发中,Activity是用户界面的基本单元,经常需要在不同的Activity之间传递数据。本教程将详细讲解如何在两个Activity之间实现数据传递,主要涉及三种常见方法:Intent的Extra数据、Bundle对象以及使用...

    Android例子源码Activity间的数据传递

    在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是常见的需求。这个"Android例子源码Activity间的数据传递"着重展示了如何在不同的Activity之间有效地传递数据。以下是关于这个主题的详细...

    Activity之间的简单数据传递

    Activity之间的通信是Android系统中不可或缺的一部分,本教程将详细讲解如何在不同的Activity之间进行简单数据传递。 一、基本概念 Activity间的数据传递主要通过Intent进行。Intent不仅用于启动新的Activity,还能...

    在不同Activity之间传递数据的四种常用方法

    在Android中传递数据的方法非常多,本次介绍4中比较常用的数据传递方法: 1.通过Intent传递数据 2.通过静态变量(static)传递数据 3.通过剪贴板(Clipboard)传递数据 4.通过全局对象传递数据 在...

    Activity页面数据传递

    在Android应用中,我们经常需要在不同的Activity之间传递数据,这可能是为了启动新Activity时设置参数,或者在用户完成某操作后返回结果。以下将详细介绍Activity之间如何进行数据传递。 ### 1. 启动Activity时的...

    Activity之间传递数据

    在Android应用开发中,Activity是用户界面的基本单元,它们之间的数据传递是十分常见的操作。"Activity之间传递数据"这一主题,主要涉及如何使用Intent对象在不同的Activity之间传递各种类型的数据,包括基本数据...

    Activity之间传递对象的Demo

    Intent是Android系统中用于启动一个Activity或Service,同时也可以用来在组件间传递数据。我们可以通过Intent的putExtra()方法来添加需要传递的数据,然后在接收端通过getExtra()方法获取。对于简单的数据类型(如...

Global site tag (gtag.js) - Google Analytics