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
中,并且能够从中恢复,并且这个类必须要有一个
static
的
field
,并且名称要为
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);