`
身心不坚强
  • 浏览: 36825 次
  • 性别: Icon_minigender_2
  • 来自: 西安
社区版块
存档分类
最新评论

Intent传递对象和集合的实现

阅读更多
注:对象需要实现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传递对象

    "Android Intent传递对象"这个主题主要关注如何利用Intent来传递自定义对象,以便在应用程序的不同部分共享数据。下面我们将深入探讨这个话题。 首先,了解Intent的基本结构和类型至关重要。Intent有两种类型:显式...

    【Intent传递】对象、数组

    在Android应用开发中,Intent是连接各个组件(如Activity、Service、BroadcastReceiver)的重要桥梁,用于传递数据和...你可以下载IntentObject压缩包,运行其中的代码,亲自体验和理解Intent传递对象和数组的过程。

    Activity 间intent传递有序排序的map集合

    在提供的代码文件`MainActivity.java`和`T3.java`中,可能会包含具体的Intent传递和接收的实现,你可以查看这些文件以了解更多细节。通过这种方式,你可以确保在Activity间传递的Map集合保持其原有的顺序,从而满足...

    android中intent传递list或者对象的方法

    本文实例讲述了android中intent传递list或者对象的方法。分享给大家供大家参考。具体实现方法如下: 方法一: 如果单纯的传递List&lt;String&gt; 或者List的话 就可以直接使用 代码如下: 代码如下:intent....

    Android通过Intent传递数据

    "Android通过Intent传递数据"这一主题,涵盖了Intent的基本使用和数据传递的方式。 Intent分为显式Intent和隐式Intent。显式Intent明确指定要启动的目标组件,而隐式Intent则不指定具体接收者,而是根据Intent的...

    【Intent传递】对象、数组 DEMO

    与简单类型类似,数组和集合(如ArrayList、HashSet等)也可以通过Intent传递,但需要额外处理。例如,传递一个字符串数组: ```java String[] array = {"item1", "item2"}; intent.putExtra("key", array); ``...

    intent传递ArrayList&lt;T&gt;

    通过实现序列化和反序列化,我们可以安全地在组件间传递复杂的对象集合。这不仅适用于ArrayList,也适用于其他实现了Parcelable接口的集合类,如LinkedList、HashSet等。熟悉这些机制对于优化应用性能和提升用户体验...

    android activityIntent 传值 传对象

    只需让自定义类实现Serializable接口,Intent就能通过putExtra()方法传递对象: ```java // 实现Serializable的MyObject MyObject object = new MyObject(); intent.putExtra("objectKey", object); // 或者用...

    Activity之间传递对象的Demo

    为了让自定义对象能够通过Intent传递,我们需要让该类实现Parcelable接口。实现这个接口需要编写以下方法: 1. `public int describeContents()`:返回当前对象的内存引用,通常返回0。 2. `public void ...

    利用Parceable传递复杂对象

    3. **使用Intent传递Parceable对象**:一旦你的对象实现了Parceable,就可以通过Intent在Activity之间传递了。例如,你可以这样使用: ```java Intent intent = new Intent(this, TargetActivity.class); intent....

    使用intent传值和回传值

    - 在使用Intent传递数据时,确保在目标Activity中正确地获取数据,使用getExtra()系列方法,如getStringExtra()、getIntExtra()等。 - 请求码(requestCode)是自定义的整型值,用于区分不同来源的返回结果。避免与...

    intent跳转传值

    2. 对象:对于自定义对象,可以通过实现Parcelable接口或者Serializable接口来实现序列化,然后通过Intent传递。Parcelable接口的性能优于Serializable,但在简单场景下两者都可以使用。例如: ```java // 实现...

    Intent使用示例(一)

    Intent是Android系统中的一种核心组件,它用于在应用程序的不同组件之间传递消息,是实现组件间通信的主要手段。本文将深入探讨Intent的使用示例,包括`startActivityForResult`的运用,以及Bundle与Intent保存对象...

    intent传值

    - 对于复杂对象,如自定义类实例,需要实现`Parcelable`或`Serializable`接口,才能通过Intent传递。 - `Parcelable`通常比`Serializable`更高效,但实现起来稍复杂。 - 实现`Parcelable`时,需要重写`...

    Intent_Bundle_传参数

    Bundle支持的数据类型包括基本类型(如int、float、String等)、集合类型(如ArrayList、HashMap等)以及Parcelable和Serializable接口实现的对象。因此,通过Bundle,Intent可以传递更丰富的信息。 1. **创建和...

    IntentSendObj

    总结来说,`IntentSendObj`涉及到的关键知识点包括:Intent在Android中的作用、对象序列化和Parcelable接口的使用,以及如何通过Intent传递对象和集合。理解并掌握这些技术,对于Android开发者来说至关重要,因为...

    Activity生命周期及Intent传值

    除了字符串,Intent还能传递各种类型的数据,包括整型、浮点型、布尔型、数组、集合以及Parcelable和Serializable接口的实现类对象。对于复杂数据结构,可以使用Bundle的putParcelableArrayListExtra()和...

    Android Parcelable序列化自定义类集合在Activity间传递

    综上所述,要理解并实现Android中Parcelable序列化自定义类集合在Activity间传递,开发者需要掌握Parcelable接口的使用、自定义类的Parcelable实现、集合处理、Intent数据传递,以及可能借助的源码阅读和辅助工具。...

    Android Intent多种传值方式

    - 若自定义对象实现Serializable接口,Intent也能传递此类对象,但效率较低。 - 示例: ```java MyObject obj = new MyObject(); intent.putExtra("key", obj); ``` - 接收端: ```java MyObject obj = (My...

    038集-Intent类的重要成员变量

    通过理解和熟练运用Intent类的这些关键成员变量,开发者能够更高效地在Android应用中实现组件间的通信,提高应用的灵活性和用户体验。不断学习和实践,才能真正掌握Intent的精髓,成为出色的Android开发者。

Global site tag (gtag.js) - Google Analytics