android Activity之间传递对象

android 不同activity之间传递对象有两种方式:

Bundle 的 1) public void putSerializable(String key, Serializable value) ; 2)public void putParcelable(String key, Parcelable value)

所以传递类需要 implements Serializable 或者 implements Parcelable 即可。

一)implements Serializable 、 Parcelable的两个类:

1)Serializable: Mobile.java

package com.example.objecttest.myclass;

import java.io.Serializable;

public class Mobile implements Serializable {
	private static final long serialVersionUID = 5403208217014231126L;
	
	private String model;

	public Mobile(String model) {
		super();
		this.model = model;
	}

	public String getModel() {
		return model;
	}

	public void setModel(String model) {
		this.model = model;
	}

}


 

2)public interface Parcelable

如果某个类实现了这个接口,那么它的对象实例可以写入到Parcel中,并且能够从中恢复,并且这个类必须要有一个staticfield,并且名称要为CREATOR,这个field是某个实现了Parcelable.Creator接口的类的对象实例。

public static interface Parcelable.Creator

    Interface that must be implemented and provided as a public CREATOR field that generates instances of your Parcelable class from a Parcel

   其有两个成员函数:createFromParcel和newArray。

 createFromParcel函数创建实现Parcelable接口的某个类的一个新的对象实例,并且用从给定的Parcel中获取的数据进行实例化,Parcel中的数据是在之前通过Parcelable.writeToParcel方式写入的数据。

   newArray函数创建实现Parcelable接口的某个类的一个新的对象数组,数组中的每个项都被初始化为null。

 

Parcelable : Pad,java

package com.example.objecttest.myclass;

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

public class Pad implements Parcelable {
	private String model;

	public Pad(String model) {
		super();
		this.model = model;
	}

	public static final Parcelable.Creator CREATOR = new Creator() {
		public Pad createFromParcel(Parcel source) {
			Pad mBook = new Pad(source.readString());
			return mBook;
		}

		public Pad[] newArray(int size) {
			return new Pad[size];
		}
	};

	@Override
	public int describeContents() {
		// TODO Auto-generated method stub
		return 0;
	}

	@Override
	public void writeToParcel(Parcel dest, int flags) {
		// TODO Auto-generated method stub
		dest.writeString(model);
	}

	//
	public String getModel() {
		return model;
	}

	public void setModel(String model) {
		this.model = model;
	}

}


 

二 )使用:

1)

 /**
  * Serializeable传递对象的方法
  */
 private void SerializeMethod() {
  Mobile mMobile = new Mobile("ME811");
  Intent mIntent = new Intent(this, SerializableActivity.class);
  Bundle mBundle = new Bundle();
  mBundle.putSerializable(SER_KEY, mMobile);
  mIntent.putExtras(mBundle);

  startActivity(mIntent);
 }

 

2)

 /**
  * Pacelable传递对象方法
  */
 private void PacelableMethod() {
  Pad mPolice = new Pad("Nexus 7");
  Intent mIntent = new Intent(this, ParcelableActivity.class);
  Bundle mBundle = new Bundle();
  mBundle.putParcelable(PAR_KEY, mPolice);
  mIntent.putExtras(mBundle);

  startActivity(mIntent);
 }

 

三 )获得传递过来的结果:

1)Mobile mPerson = (Mobile) getIntent().getSerializableExtra(SER_KEY);

2)Pad mPad = (Pad) getIntent().getParcelableExtra(PAR_KEY);

 

 

你可能感兴趣的:(android)