注:对象需要实现Parcelable接口,并且重写三个方法
1.实体类:Device.java
package wlx.test;
import android.os.Parcel;
import android.os.Parcelable;
/**
* 注意写入和读出顺序要一致!!!
* @author Tracy.Lee
*
*/
public class Device implements Parcelable {
private String location;
private String name;
public Device() {
}
public Device(String location, String name) {
this.location = location;
this.name = name;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getLocation() {
return location;
}
public void setLocation(String location) {
this.location = location;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
// 先写位置,后写名称
dest.writeString(location);
dest.writeString(name);
}
public static final Creator<Device> CREATOR = new Creator<Device>() {
public Device createFromParcel(Parcel source) {
//先构造位置,后构造名称(与构造方法的顺序关联)
return new Device(source.readString(), source.readString());
}
public Device[] newArray(int size) {
return new Device[size];
}
};
}
2.传递对象:MainActivity.java
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
/* ******* 传递对象 OK********* */
Device device = new Device();
device.setLocation("SRoom");
device.setName("light");
intent.putExtra("device", device);
intent.setClass(MainActivity.this, OtherActivity.class);
startActivity(intent);
}
});
3.取对象:OtherActivity.java
Intent intent = getIntent();
/* ******** 取对象 ******** */
Device device = intent.getParcelableExtra("device");
System.out.println("device location--->" + device.getLocation());
System.out.println("device name--->" + device.getName());
4.传递集合:MainActivity.java
button.setOnClickListener(new OnClickListener() {
@Override
public void onClick(View v) {
Intent intent = new Intent();
/* ******* 传递集合 OK********* */
ArrayList<Device> devices = new ArrayList<Device>();
Device device = new Device();
device.setLocation("SRoom");
device.setName("light");
Device device1 = new Device();
device1.setLocation("ERoom");
device1.setName("certain");
devices.add(device);
devices.add(device1);
intent.putParcelableArrayListExtra("devices", devices);
intent.setClass(MainActivity.this, SRoomActivity.class);
startActivity(intent);
}
});
5.取集合:OtherActivity.java
Intent intent = getIntent();
/* ******** 取集合 ******** */
ArrayList<Device> devices = intent.getParcelableArrayListExtra("devices");
System.out.println("device1:location---->" + devices.get(0).getLocation());
System.out.println("device1:name---->" + devices.get(0).getName());
System.out.println("device2:location---->" + devices.get(1).getLocation());
System.out.println("device2:name---->" + devices.get(1).getName());
分享到:
相关推荐
"Android Intent传递对象"这个主题主要关注如何利用Intent来传递自定义对象,以便在应用程序的不同部分共享数据。下面我们将深入探讨这个话题。 首先,了解Intent的基本结构和类型至关重要。Intent有两种类型:显式...
在Android应用开发中,Intent是连接各个组件(如Activity、Service、BroadcastReceiver)的重要桥梁,用于传递数据和...你可以下载IntentObject压缩包,运行其中的代码,亲自体验和理解Intent传递对象和数组的过程。
在提供的代码文件`MainActivity.java`和`T3.java`中,可能会包含具体的Intent传递和接收的实现,你可以查看这些文件以了解更多细节。通过这种方式,你可以确保在Activity间传递的Map集合保持其原有的顺序,从而满足...
本文实例讲述了android中intent传递list或者对象的方法。分享给大家供大家参考。具体实现方法如下: 方法一: 如果单纯的传递List<String> 或者List的话 就可以直接使用 代码如下: 代码如下:intent....
"Android通过Intent传递数据"这一主题,涵盖了Intent的基本使用和数据传递的方式。 Intent分为显式Intent和隐式Intent。显式Intent明确指定要启动的目标组件,而隐式Intent则不指定具体接收者,而是根据Intent的...
与简单类型类似,数组和集合(如ArrayList、HashSet等)也可以通过Intent传递,但需要额外处理。例如,传递一个字符串数组: ```java String[] array = {"item1", "item2"}; intent.putExtra("key", array); ``...
通过实现序列化和反序列化,我们可以安全地在组件间传递复杂的对象集合。这不仅适用于ArrayList,也适用于其他实现了Parcelable接口的集合类,如LinkedList、HashSet等。熟悉这些机制对于优化应用性能和提升用户体验...
只需让自定义类实现Serializable接口,Intent就能通过putExtra()方法传递对象: ```java // 实现Serializable的MyObject MyObject object = new MyObject(); intent.putExtra("objectKey", object); // 或者用...
为了让自定义对象能够通过Intent传递,我们需要让该类实现Parcelable接口。实现这个接口需要编写以下方法: 1. `public int describeContents()`:返回当前对象的内存引用,通常返回0。 2. `public void ...
3. **使用Intent传递Parceable对象**:一旦你的对象实现了Parceable,就可以通过Intent在Activity之间传递了。例如,你可以这样使用: ```java Intent intent = new Intent(this, TargetActivity.class); intent....
- 在使用Intent传递数据时,确保在目标Activity中正确地获取数据,使用getExtra()系列方法,如getStringExtra()、getIntExtra()等。 - 请求码(requestCode)是自定义的整型值,用于区分不同来源的返回结果。避免与...
2. 对象:对于自定义对象,可以通过实现Parcelable接口或者Serializable接口来实现序列化,然后通过Intent传递。Parcelable接口的性能优于Serializable,但在简单场景下两者都可以使用。例如: ```java // 实现...
Intent是Android系统中的一种核心组件,它用于在应用程序的不同组件之间传递消息,是实现组件间通信的主要手段。本文将深入探讨Intent的使用示例,包括`startActivityForResult`的运用,以及Bundle与Intent保存对象...
- 对于复杂对象,如自定义类实例,需要实现`Parcelable`或`Serializable`接口,才能通过Intent传递。 - `Parcelable`通常比`Serializable`更高效,但实现起来稍复杂。 - 实现`Parcelable`时,需要重写`...
Bundle支持的数据类型包括基本类型(如int、float、String等)、集合类型(如ArrayList、HashMap等)以及Parcelable和Serializable接口实现的对象。因此,通过Bundle,Intent可以传递更丰富的信息。 1. **创建和...
总结来说,`IntentSendObj`涉及到的关键知识点包括:Intent在Android中的作用、对象序列化和Parcelable接口的使用,以及如何通过Intent传递对象和集合。理解并掌握这些技术,对于Android开发者来说至关重要,因为...
除了字符串,Intent还能传递各种类型的数据,包括整型、浮点型、布尔型、数组、集合以及Parcelable和Serializable接口的实现类对象。对于复杂数据结构,可以使用Bundle的putParcelableArrayListExtra()和...
综上所述,要理解并实现Android中Parcelable序列化自定义类集合在Activity间传递,开发者需要掌握Parcelable接口的使用、自定义类的Parcelable实现、集合处理、Intent数据传递,以及可能借助的源码阅读和辅助工具。...
- 若自定义对象实现Serializable接口,Intent也能传递此类对象,但效率较低。 - 示例: ```java MyObject obj = new MyObject(); intent.putExtra("key", obj); ``` - 接收端: ```java MyObject obj = (My...
通过理解和熟练运用Intent类的这些关键成员变量,开发者能够更高效地在Android应用中实现组件间的通信,提高应用的灵活性和用户体验。不断学习和实践,才能真正掌握Intent的精髓,成为出色的Android开发者。