`

Parcelable传个Map的简单应用

阅读更多

最简单的,主要是实现Parcelable的接口,重写那个CREATOR

 

测试用的接收信息Activity

package com.nico;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;
import android.os.Parcelable;

public class Test extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent i = getIntent();
        Person p = i.getParcelableExtra("yes");
        System.out.println("---->"+p.name);
        System.out.println("---->"+p.map.size());
    }
}

 发送的Activity

package com.nico;

import java.util.HashMap;

import android.app.Activity;
import android.content.Intent;
import android.os.Bundle;

public class TestNew extends Activity {
    /** Called when the activity is first created. */
    @Override
    public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
        Intent intent = new Intent();
        Person p = new Person();
        p.map = new HashMap<String,String>();
        p.map.put("yes", "ido");
        p.name="ok";
        intent.putExtra("yes", p);
        intent.setClass(this, Test.class);
        startActivity(intent);
    }
}

 Parcelable的实现类

package com.nico;

import java.util.HashMap;

import android.os.Parcel;
import android.os.Parcelable;

public class Person implements Parcelable {

	public HashMap<String,String> map = new HashMap<String,String> ();
	
	public String name ;
	@Override
	public int describeContents() {
		return 0;
	}

	@Override
	public void writeToParcel(Parcel dest, int flags) {

		dest.writeMap(map);
		dest.writeString(name);
	}
	public static final Parcelable.Creator<Person> CREATOR = new Parcelable.Creator<Person>() {

		@Override
		public Person createFromParcel(Parcel source) {
			Person p = new Person();
			p.map=source.readHashMap(HashMap.class.getClassLoader());
			p.name=source.readString();
			return p;
		}

		@Override
		public Person[] newArray(int size) {
			// TODO Auto-generated method stub
			return null;
		}
	};

}

 

分享到:
评论

相关推荐

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

    此外,由于Parcelable接口通常比Serializable更高效,如果你需要在大量数据传递时优化性能,可以考虑自定义一个Parcelable实现的Map子类,比如`OrderedMapParcelable`,并实现`writeToParcel()`和`readFromParcel()`...

    Android中Parcelable的作用实例解析

    下面是一个简单的Parcelable实现示例: ```java public class Person implements Parcelable { public String name; public HashMap, String&gt; map; public Person() {} protected Person(Parcel in) { name ...

    aidl简单实例

    接口定义类似于Java接口,但支持更有限的数据类型,如基本数据类型、List、Map和自定义的Parcelable对象。 例如: ```java package com.example.myapp; interface IMyService { void sendMessage(int msgId, ...

    Android应用源码之AidlDemo(简单aidl的例子).zip

    由于AIDL基于Binder机制,所以它支持基本数据类型、数组、List、Map以及实现了Parcelable接口的对象。在AidlDemo中,`sendString`方法展示了如何传递字符串,而`returnInt`则展示了返回整型数据的用法。 ### 7. ...

    Activity之间传值

    例如,对于一个Parcelable对象列表: ```java List&lt;MyObject&gt; list = new ArrayList(); // 添加对象到list intent.putParcelableArrayListExtra("key", list); ``` 接收端: ```java List&lt;MyObject&gt; receivedList ...

    Android应用源码之aidl跨进程调用-IT计算机-毕业设计.zip

    本资源“Android应用源码之aidl跨进程调用”是一个针对Android应用的毕业设计示例,旨在帮助开发者深入理解并实践这一关键功能。下面将详细介绍Android中的aidl(Android Interface Definition Language)及其在跨...

    最简单的AIDL通信

    通过以上步骤,我们可以实现"最简单的AIDL通信",让一个应用能够调用另一个应用的服务,进行数据交互,从而实现更复杂的系统功能。在实际开发中,理解并熟练掌握AIDL是构建大型、分布式Android应用的关键技能之一。

    AndroidAidlDemo(简单aidl的例子)-IT计算机-毕业设计.zip

    这个“AndroidAidlDemo”是一个简单的例子,展示了如何使用AIDL来实现不同应用组件之间的数据交换。在毕业设计中,这样的实践可以帮助学生深入理解Android系统的多进程通信机制,提升开发技能。 AIDL的基本概念: 1...

    Android应用源码之aidl跨进程调用.zip

    下面是一个简单的AIDL接口示例: ```aidl interface IMyService { void sendString(String data); int receiveInt(); } ``` 在这个例子中,`IMyService`接口定义了两个方法:`sendString`用于发送一个字符串到...

    跨应用调用之AIDL

    1. **数据类型限制**: AIDL支持基本数据类型、字符串、List、Map以及自定义的Parcelable或Serializable对象。复杂的对象需要实现Parcelable接口,以便于序列化和反序列化。 2. **线程管理**: 跨进程通信发生在不同...

    AIDL的简单使用

    每个参数都有其类型,支持基本数据类型、List、Map以及自定义的Parcelable类。 - **数据传输**:在AIDL中,所有传入和传出的数据都必须是平台支持的类型或者是实现了Parcelable接口的自定义类。这是因为数据需要...

    android AidlDemo(简单aidl的例子)

    通过"android AidlDemo(简单aidl的例子)"这个示例,开发者可以学习如何创建AIDL接口,实现服务端和客户端的交互,从而掌握Android中的进程间通信技术,提高应用的可扩展性和灵活性。实践中,开发者应根据实际需求...

    aidl简单案例

    AIDL支持的数据类型包括基本类型(如int、String等)、List、Map以及自定义的Parcelable对象。当Android编译系统处理AIDL文件时,它会生成相应的Java代码,供客户端和服务端使用。 **AIDL案例分析** 在“aidl简单...

    Android AIDL 简单case

    参数可以是基本数据类型、List、Map或自定义的数据类型(需要在同一个AIDL文件或被导入的文件中定义)。 3. 工作原理 当Android编译AIDL文件时,会生成相应的Java绑定类,这些类处理数据序列化和反序列化,以及在...

    aidl的简单使用

    它允许一个应用组件在不同的进程中运行,并且能够相互调用方法,就像是在同一个进程中一样。当你需要在服务(Service)或者活动(Activity)之间进行复杂的交互,特别是在跨进程的情况下,AIDL就显得非常关键。 **...

    AIDL进程间传输复杂数据(2014年企业版)

    下面以一个简单的自定义对象`Achievement`为例,展示如何实现Parcelable: ```java public class Achievement implements Parcelable { private String name; private int points; // 构造函数,getter和setter...

    应用源码之aidl跨进程调用.zip

    AIDL是Android提供的一种编程工具,它允许开发者定义接口,使得一个应用能透明地调用另一个应用中的服务。 **AIDL基本概念** AIDL本质上是一种简单的接口描述语言,用于定义服务端提供的接口,客户端通过这些接口...

    使用AIDL完成进程间的简单通信

    需要注意的是,AIDL支持的数据类型有限,包括基本类型、String、List、Map以及实现了Parcelable接口的自定义对象。此外,由于跨进程通信涉及系统层面的Binder机制,因此在处理过程中可能会遇到远程方法调用(Remote ...

    AIDL的简单例子

    AIDL支持的数据类型包括基本类型(如int, String等)、List、Map以及自定义的Parcelable或Serializable对象。下面是一个简单的AIDL文件示例: ```aidl package com.example.aidldemo; interface IMyService { int...

    一个应用启动另一个应用,实现应用间通讯,用bundle就行了,Android aidl简单demo 实现ipc通讯。

    此外,`AIDL`支持的数据类型包括基本类型、字符串、序列化对象(如`Parcelable`)以及`List`和`Map`(其元素必须是`AIDL`支持的类型)。 总结来说,Android应用间通信可以通过多种方式实现,如使用`Intent`和`...

Global site tag (gtag.js) - Google Analytics