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对象了。