http://blog.sina.com.cn/s/blog_78e3ae430100pxba.html

android提供了一种新的类型:Parcel。本类被用作封装数据的容器,封装后的数据可以通过Intent或IPC传递。 除了基本类型以 外,只有实现了Parcelable接口的类才能被放入Parcel中。 Parcelable实现要点:需要实现三个东西 1)writeToParcel 方法。该方法将类的数据写入外部提供的Parcel中.声明如下: writeToParcel (Parcel dest, int flags) 具体参数含义见javadoc 2)describeContents方法。没搞懂有什么用,反正直接返回0也可以 3)静态的Parcelable.Creator接口,本接口有两个方法: createFromParcel(Parcel in) 实现从in中创建出类的实例的功能 newArray(int size) 创建一个类型为T,长度为size的数组,仅一句话(return new T[size])即可。估计本方法是供外部类反序列化本类数组使用。 测试用的接收信息Activity
import android.app.Activity;   import android.content.Intent;   import android.os.Bundle;   import android.os.Parcelable;     public class Test extends Activity {             @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());       }   }  发送的Activityimport java.util.HashMap;   import android.app.Activity;   import android.content.Intent;   import android.os.Bundle;     public class TestNew extends Activity {             @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的实现类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>() {   //重写Creator          @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;           }       };     }   


更多相关文章

  1. Mars Android视频学习笔记——01_16_SQLite使用方法
  2. android 登陆、提交数据或加载数据时提示页面
  3. Android之UI学习篇十:使用TabHost实现微博客户端界面
  4. Android创建wifi热点爬坑总结
  5. Android解析中国天气接口JSon数据,应用于天气查询!
  6. android中Parcelable接口的使用
  7. Android之Action Bar
  8. 浅谈Java中Collections.sort对List排序的两种方法
  9. Python list sort方法的具体使用

随机推荐

  1. Android--Toast 两个 Crash
  2. Widget开发中遇到的坑
  3. android 系统 makefile文件(Android.mk)组
  4. Android(安卓)新浪微博XAuth方式授权与发
  5. [PX3][Android7.1] 调试笔记 去除USB权限
  6. android之绘图工具类详解
  7. Android(安卓)Studio 项目基本结构
  8. Android(安卓)Looper And Hander 机制剖
  9. Android之使用PopupWindow使用和总结
  10. vitamio简介.java