在开发中不少要用到Activity直接传输对象,下面我们来看看,其实跟java里面差不多

自定义对象的传递:通过intent传递自定义对象的方法有两个
第一是实现Serialization接口;
第二是实现Parcelable接口;


下面来看个例子:

package com.example.bean; import java.io.Serializable; public class Bed implements Serializable {  private String name;  private int number;  public String getName() {   return name;  }  public void setName(String name) {   this.name = name;  }  public int getNumber() {   return number;  }  public void setNumber(int number) {   this.number = number;  }  @Override  public String toString() {   return "Name:" + getName() + ",Number:" + getNumber();  } }




package com.example.bean; import android.os.Parcel; import android.os.Parcelable; public class Patient implements Parcelable { private String name; private int number; public String getName() {  return name; } public void setName(String name) {  this.name = name; } public int getNumber() {  return number; } public void setNumber(int number) {  this.number = number; } public static final Parcelable.Creator<Patient> CREATOR = new Parcelable.Creator<Patient>() {  public Patient createFromParcel(Parcel p) {   Patient patient = new Patient();   patient.name = p.readString();   patient.number = p.readInt();   return patient;  }  public Patient[] newArray(int size) {   return new Patient[size];  } }; @Override public int describeContents() {  return 0; } /** * *@desc  注:这里的write方法和createFromParcel里的一一对应,不然createFromParcel都是p.readString(),你怎么知道是哪一个 * */ @Override public void writeToParcel(Parcel p, int flags) {  p.writeString(name);  p.writeInt(number); } @Override public String toString() {  return "Name:" + getName() + ",Number:" + getNumber(); }}

 TestActivity.java:    StringBuilder sb = new StringBuilder();  sb.append("Serializable Bed对象\n");  Bed bed = (Bed) getIntent().getExtras().get("bed");  sb.append(bed.toString());  sb.append("\n\nList<Serializable Bed>集合\n");  List<Bed> listBed = (List<Bed>) getIntent()    .getSerializableExtra("beds");  for (int i = 0; i < listBed.size(); i++) {   sb.append(listBed.get(i).toString() + ";");  }  sb.append("\n\nParcelable Patient对象\n");  Patient patient = getIntent().getParcelableExtra("patient1");  sb.append(patient.toString());  sb.append("\n\nParcelable Patient byte[]\n");  byte[] data = getIntent().getByteArrayExtra("patient2");  if (data != null) {   Parcel in = Parcel.obtain();   in.unmarshall(data, 0, data.length);   in.setDataPosition(0);   patient = Patient.CREATOR.createFromParcel(in);  }  sb.append(patient.toString());  sb.append("\n\nString数组\n");  String[] str = getIntent().getStringArrayExtra("patients");  for (int i = 0; i < str.length; i++) {   sb.append(str[i]);  }  TextView tv = (TextView) findViewById(R.id.tv);  tv.setText(sb);

我的博客其它文章列表
http://my.oschina.net/helu

更多相关文章

  1. android设置显示语言
  2. Recyclerview条目可拖拽可侧滑删除实战详解
  3. Android(安卓)ApiDemo学习(二)notification——1 IncomingMessage
  4. Android(安卓)handler使用方法
  5. android LayoutInflater.inflate()的参数及其用法
  6. Parcelable序列化
  7. 揭秘Context(上下文)
  8. MotionEvent事件在onInterceptTouchEvent()、onTouchEvent()中的
  9. Effective Android(安卓)UI - MVP

随机推荐

  1. [转]Android(安卓)开发中的日常积累
  2. Android(安卓)Layout XML属性
  3. Android(安卓)学习纲要
  4. android init language
  5. Your content must have a ListView whos
  6. android如何实现开机自动启动Service或ap
  7. android中ImageView的ScaleType属性
  8. 【Android布局】在程序中设置android:gra
  9. android wifi
  10. android编程中的琐碎知识点汇总(2)