在activity之间可能要传递数据,如果是基本类型加String类型,那就好办了,android已经提供了相关api。
但是如果要传递一个实体类,比如说一个好友类:buddyinfo,就没有相关api供调用了,这个时候可以使用parcebale。
看代码:
实体类:
import android.os.Parcel;
import android.os.Parcelable;
public class BuddyInfo implements Parcelable{
private String nickname;
private String sig;
private int image;
public BuddyInfo(String nickname,String sig,int image){
setNickname(nickname);
setSig(sig);
setImage(image);
}
public BuddyInfo(Parcel source) {
nickname = source.readString();
sig = source.readString();
image = source.readInt();
}
@Override
public int describeContents() {
return 0;
}
public static final Parcelable.Creator<BuddyInfo> CREATOR = new Creator<BuddyInfo>() {
@Override
public BuddyInfo[] newArray(int size) {
return new BuddyInfo [size];
}
@Override
public BuddyInfo createFromParcel(Parcel source) {
return new BuddyInfo(source);
}
};
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(nickname);
dest.writeString(sig);
dest.writeInt(image);
}
public String getNickname() {
return nickname;
}
public void setNickname(String nickname) {
this.nickname = nickname;
}
public String getSig() {
return sig;
}
public void setSig(String sig) {
this.sig = sig;
}
public int getImage() {
return image;
}
public void setImage(int image) {
this.image = image;
}
}
在intent中封装:
mBuddyInfo = newBuddyInfo(******************);
Intent intent = new Intent(this,ChatActivity.class);
intent.putExtra(BUDDY, mBuddyInfo);
startActivity(intent);
获取数据:
mIntent = this.getIntent();
Parcelable parcelable = mIntent.getParcelableExtra(BUDDY);
mBuddyInfo = (BuddyInfo)parcelable;
mBuddyname = mBuddyInfo.getNickname();
是不是很简单呢?