总结一下Activity之间传递对象的方法
首先,在我们的javabean内部的属性都做了封装一后,使用实现Parcelable接口的方式来做传递,下面是我的类的代码:
public class UsersInfo implements Parcelable {
private Long userId;
private String userName; // 用户名
private String userPassword; // 用户密码
private int userSex; // 用户性别
private String userAddress; // 用户地址
private int userAge; // 用户年龄
private String userLikes; // 用户爱好
private String userMark; // 用户描述
private String userPhoneNumber; // 用户手机号码
private String userImgIcon; // 用户头像
private int userStatus; // 用户状态
private double userx; //用户经度
private double usery; //用户纬度
private String userUpdateTime; //用户更新时间
private String userImei;
public Long getUserId() {
return userId;
}
public void setUserId(Long userId) {
this.userId = userId;
}
public int getUserStatus() {
return userStatus;
}
public void setUserStatus(int userStatus) {
this.userStatus = userStatus;
}
public int getUserSex() {
return userSex;
}
public void setUserSex(int userSex) {
this.userSex = userSex;
}
public String getUserImgIcon() {
return userImgIcon;
}
public void setUserImgIcon(String userImgIcon) {
this.userImgIcon = userImgIcon;
}
public String getUserUpdateTime() {
return userUpdateTime;
}
public void setUserUpdateTime(String userUpdateTime) {
this.userUpdateTime = userUpdateTime;
}
public double getUserx() {
return userx;
}
public void setUserx(double userx) {
this.userx = userx;
}
public double getUsery() {
return usery;
}
public void setUsery(double usery) {
this.usery = usery;
}
public String getUserName() {
return userName;
}
public void setUserName(String userName) {
this.userName = userName;
}
public String getUserPassword() {
return userPassword;
}
public void setUserPassword(String userPassword) {
this.userPassword = userPassword;
}
public String getUserAddress() {
return userAddress;
}
public void setUserAddress(String userAddress) {
this.userAddress = userAddress;
}
public int getUserAge() {
return userAge;
}
public void setUserAge(int userAge) {
this.userAge = userAge;
}
public String getUserLikes() {
return userLikes;
}
public void setUserLikes(String userLikes) {
this.userLikes = userLikes;
}
public String getUserMark() {
return userMark;
}
public void setUserMark(String userMark) {
this.userMark = userMark;
}
public String getUserPhoneNumber() {
return userPhoneNumber;
}
public void setUserPhoneNumber(String userPhoneNumber) {
this.userPhoneNumber = userPhoneNumber;
}
public String getUserImei() {
return userImei;
}
public void setUserImei(String userImei) {
this.userImei = userImei;
}
@Override
public int describeContents() {
// TODO Auto-generated method stub
return 0;
}
@Override
public void writeToParcel(Parcel dest, int arg1) {
//不能错位
dest.writeLong(userId);
dest.writeString(userName);
dest.writeString(userPassword);
dest.writeInt(userSex);
dest.writeString(userAddress);
dest.writeInt(userAge);
dest.writeString(userLikes);
dest.writeString(userMark);
dest.writeString(userPhoneNumber);
dest.writeString(userImgIcon);
dest.writeInt(userStatus);
dest.writeDouble(userx);
dest.writeDouble(usery);
dest.writeString(userUpdateTime);
dest.writeString(userImei);
}
public static final Parcelable.Creator<UsersInfo> CREATOR = new Creator<UsersInfo>(){
@Override
public UsersInfo createFromParcel(Parcel source) {
// TODO Auto-generated method stub
UsersInfo info = new UsersInfo();
info.userId = source.readLong();
info.userName = source.readString();
info.userPassword = source.readString();
info.userSex = source.readInt();
info.userAddress = source.readString();
info.userAge = source.readInt();
info.userLikes=source.readString();
info.userMark = source.readString();
info.userPhoneNumber = source.readString();
info.userImgIcon=source.readString();
// info.userImgIcon=source.createByteArray();
info.userStatus = source.readInt();
info.userx = source.readDouble();
info.usery = source.readDouble();
info.userUpdateTime=source.readString();
info.userImei=source.readString();
return info;
}
@Override
public UsersInfo[] newArray(int size) {
// TODO Auto-generated method stub
return new UsersInfo[size];
}
};
}
其中describeContents() 这个方法不用管,writeToParcel 这个方法注意了, 需要和上面封装的那些属性一样,Parcelable.Creator<UsersInfo> CREATOR 这个里面实现的方法也是一样,最后newArray 这个方法返回return new UsersInfo[size];
下面是调用代码:Bundle mBundle = new Bundle();
intent = new Intent(AAtivity.this, BAtivity.class);UsersInfo user=等于你要传递的对象;
mBundle.putParcelable("userObject", user);
intent.putExtras(mBundle);
startActivity(intent);这样就传递过去了,在BAtivity里面取这个对象也是一样的,如下代码:
UsersInfo usersInfo = (UsersInfo)getIntent().getParcelableExtra("userObject");
这样就取到了,以上是全部代码,希望对朋友们有帮助。当然还有一种方法,好像是通过序列化吧,没有具体研究,如果有朋友觉得比我这方法好用的,也希望大家共享一下,一起探索。