Android中的Fragment或Activity之间传递参数,可以使用Android Parcelable来封装实体类对象,然后使用使用bundle.putParcelable()或者intent.putParcelable方法即页面之间可传递参数了。
我们先用DataMsgParcel实体类实现Parcelable接口
import android.os.Parcel;
import android.os.Parcelable;
public class DataMsgParcel implements Parcelable {
private int dataId;
private String msg;
public String getMsg() {
return msg;
}
public void setMsg(String msg) {
this.msg = msg;
}
public int getDataId() {
return dataId;
}
public void setDataId(int dataId) {
this.dataId = dataId;
}
public DataMsgParcel(){}
protected DataMsgParcel(Parcel in) {
dataId = in.readInt();
msg = in.readString();
}
public static final Creator<DataMsgParcel> CREATOR = new Creator<DataMsgParcel>() {
@Override
public DataMsgParcel createFromParcel(Parcel in) {
return new DataMsgParcel(in);
}
@Override
public DataMsgParcel[] newArray(int size) {
return new DataMsgParcel[size];
}
};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(dataId);
dest.writeString(msg);
}
}在FirstActivity中放入数据到intent或者bundle上,代码如下:
Intent intent = new Intent(this,SecondActivity.class);
DataMsgParcel dataMsg = new DataMsgParcel();
dataMsg.setDataId(1);
dataMsg.setMsg("This is a msg");
intent.putParcelable("key",dataMsg);
startActivity(intent);然后在SecondActivity上获取来自intent的Parcelable数据即可:
DataMsgParcel dataMsgParcel = (DataMsgParcel)getIntent().getParcelable("key");
String msg = dataMsgParcel.getMsg();在Activity中使用Parcelable来传递参数,就可以传递复杂的Object对象了。