Activity之间传递对象,或者通过Bundle传递对象的两种方式。
1:Serializable方式
传递一个对象
2:Parcelable方式
传递一个对象、传递多个对象(ArrayList<Object>)
方式一:Serializable
传递类:
public class CustomeClass implements Serializable{
/**
*
*/
private static final long serialVersionUID = -7060210544600464481L;
private String name;
private String id;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
}
发送部分:
CustomeClass cc = new CustomeClass();
cc.setAge(21);
cc.setId("123456");
cc.setName("mingkg21");
cc.setSex("男");
Intent intent = new Intent(this, PersonInfo.class);
intent.putExtra("PERSON_INFO", cc);
startActivity(intent);
接收部分:
Intent intent = getIntent();
CustomeClass cc = CustomeClass)intent.getSerializableExtra("PERSON_INFO");
setTextView(R.id.id, cc.getId());
setTextView(R.id.name, cc.getName());
setTextView(R.id.sex, cc.getSex());
setTextView(R.id.age, String.valueOf(cc.getAge()));
方式二:Parcelable
传递类:
public class CustomeParcelable implements Parcelable {
private String name;
private String id;
private int age;
private String sex;
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getSex() {
return sex;
}
public void setSex(String sex) {
this.sex = sex;
}
public static final Parcelable.Creator<CustomeParcelable> CREATOR = new Creator<CustomeParcelable>(){
public CustomeParcelable createFromParcel(Parcel source) {
// TODO Auto-generated method stub
CustomeParcelable cus = new CustomeParcelable();
cus.name = source.readString();
cus.id = source.readString();
cus.age = source.readInt();
cus.sex = source.readString();
return cus;
}
public CustomeParcelable[] newArray(int size) {
// TODO Auto-generated method stub
return new CustomeParcelable[size];
}
};
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
// TODO Auto-generated method stub
dest.writeString(name);
dest.writeString(id);
dest.writeInt(age);
dest.writeString(sex);
}
}
发送部分:
CustomeParcelable cc = new CustomeParcelable();
cc.setAge(21);
cc.setId("123456");
cc.setName("mingkg21");
cc.setSex("男");
Intent intent = new Intent(this, PersonInfo.class);
intent.putExtra("PERSON_INFO", cc);
startActivity(intent);
接受部分:
Intent intent = getIntent();
CustomeParcelable cc = intent.getParcelableExtra("PERSON_INFO");
setTextView(R.id.id, cc.getId());
setTextView(R.id.name, cc.getName());
setTextView(R.id.sex, cc.getSex());
setTextView(R.id.age, String.valueOf(cc.getAge()));
以上为Parcelable传递一个对象,若要实现传递多个对象,
传递部分:
Bundle bundle = new Bundle();
bundle.putParcelableArrayList("mP3TagForNetDTOs",mP3TagForNetDTOs);
msg.setData(bundle);
endDocNotice.sendMessage(msg);
接受部分:
Bundle bundle = msg.getData();
mP3TagForNetDTOs = bundle.getParcelableArrayList("mP3TagForNetDTOs");
此文转载,来自:
http://mingkg21.iteye.com/blog/438913
Thanks.
分享到:
相关推荐
Activity间要传递数据,很多时候简单的int和string满足不了需求,我们在面向对象中已经习惯了类和对象, 那么下面就说一下如何传递类对象。 Android中有两种办法来完成这件事。一个是Java的序列化(Serializable)...
这个接口通常包含一个或多个方法,这些方法用于接收并处理来自目标Activity(接收者)的数据。接口定义如下: ```java public interface DataCallback { void onDataReceived(Object data); } ``` 然后,在源...
在提供的压缩包文件"app"中,可能包含了一个实现这两种方式的示例项目,通过查看和运行这个项目,你可以更好地理解和实践这两种Activity间对象传递的方法。学习和掌握这些技巧对于Android开发者来说至关重要,能够...
对于非资源图片,我们可以将其转换为Bitmap,然后序列化成一个字节数组传递。发送Activity: ```java Bitmap bitmap = BitmapFactory.decodeResource(getResources(), R.drawable.my_image); ByteArrayOutputStream...
在Android应用开发中,尤其是使用Kotlin作为主要编程语言时,如何有效地在多个Activity之间共享数据是一个常见的挑战。`ViewModel`是Android架构组件之一,它为了解决这个问题提供了优雅的解决方案。本文将深入探讨...
首先,Handler是Android中的一个关键组件,它允许我们通过Message对象在不同的线程之间传递数据和执行任务。通常,我们在主线程(UI线程)中创建一个Handler实例,用于接收由其他工作线程发送的消息,并在适当的时间...
1. **创建Bundle对象**:在发送数据的一方(通常是Activity),我们需要创建一个Bundle对象,然后将要传递的数据放入其中。例如,如果我们想传递一个字符串和一个整数,可以这样操作: ```java Bundle bundle = new...
如果数据需要在多个Activity间持久保存,可以考虑使用静态成员变量或单例模式。这种方式简单直接,但需要注意线程安全和内存泄漏问题。 四、文件存储和ContentProvider 对于大容量或需要跨应用共享的数据,可以...
一个应用程序可能包含多个Activity,每个Activity对应不同的功能或界面。本示例将深入探讨如何在Android项目中有效地管理和协调多个Activity。 首先,理解Activity生命周期是管理多个Activity的基础。Activity有七...
一个应用可能由多个Activity组成,每个Activity负责不同的功能模块。在实际项目中,我们需要灵活地跳转和传递数据,以便各个Activity之间能有效地协同工作。本教程将详细讲解如何在Android中添加多个Activity以及...
在Activity间传递数据时,我们通常创建一个Intent对象,然后通过putExtra()方法添加数据,最后用startActivity()或startActivityForResult()启动目标Activity。 2. **基本类型数据传递**: Android允许我们将基本...
首先,让我们讨论如何使用Intent打开另一个Activity。在Android中,Activity是用户界面的基本单元,当用户与应用交互时,可能会在不同的Activity之间切换。创建Intent并指定目标Activity即可实现这一操作。以下是一...
本篇文章将深入探讨如何在Android中实现后一个Activity向前一个Activity传递数据并进行交互。 首先,我们创建两个Activity:ActivityA(aActivity)和ActivityB。ActivityA是主界面,用户在该界面操作后启动...
Intent是一个包含消息的对象,可以用来启动一个Activity或服务,或者传递数据。创建Intent时,你需要指定目标Activity的类名,并通过setComponent()方法设置,或者通过setAction()和setCategory()来指定一个动作和...
在Android应用开发中,Activity...最后,关于博客链接中的"EX03_10"可能是指一个练习或示例代码,但没有具体的文件内容,无法在此提供进一步的细节。在实际学习或解决问题时,查看这个链接可能能提供更多的指导和帮助。
当我们从一个Activity启动另一个包含Fragment的Activity时,可以通过Intent传递基本数据类型或Parcelable/Serializable对象。然而,这种方式并不适用于Fragment,因为Fragment不直接接收Intent。我们可以将数据存储...
在Android应用开发中,TabHost通常用于创建带有多个选项卡的应用界面,每个选项卡对应一个Activity,用户可以方便地在不同功能之间切换。然而,在早期的Android版本中,如果每个选项卡都用独立的Activity实现,那么...
在安卓应用开发过程中,经常需要在多个`Activity`之间进行数据传递。这种交互对于实现复杂的应用逻辑至关重要,例如用户登录验证、表单填写等场景。本文将详细介绍如何在两个`Activity`(假定为A和B)之间传递数据...
在"ListDemo"这个例子中,我们可能需要传递一个对象列表。不论是Serializable还是Parcelable,都可以处理列表类型的数据。对于Serializable,可以直接传递`ArrayList<Serializable>`;对于Parcelable,需要传递`...
当你启动一个新的Activity时,可以通过Intent对象来传递数据。Intent不仅用于启动Activity,还可以用来传递数据。下面是一些常用的方法: - 使用`putExtra()`方法:在创建Intent时,你可以通过`putExtra(String ...