Intent中传递集合的问题与思考
刚刚接触android不久所以对intent中传递数据不是很来了解特此记录下来以备忘
同时也希望一次来帮助新手(至少我经历过应该可以说是老手了吧,呵呵。。。往脸上贴金了!)
另外我还对intent中传递参数还有一点小问题希望有人能为我解释一下疑惑
入正题:
需求:在多个activity之间传递对象集合
解决方案:
第一:我们可以定义一个继承application的这样的一个类这样我们就可以在整个应用中使用了 此方案可行!
第二:我们可以通过intent 来传递。
关于intent的知识回顾:
对intent 中传递参数的问题并不麻烦,我们知道intent中可以传递基本数据类的数据,可以传递String 可以传递 对象(但是对象必须实现序列化),另外intent也可以传递集合
但是对于集合有限制只能传递ArrayList,而且还必须是包装了泛型是Integer 或者String 这样形式的,但是根据我的需求intent 貌似满足不了,但是intent 中可以传递bundle在bundle 中我们可以看到能够传递一个实现了parcelable接口的对象集合
具体代码如下:
实体:
public class OBean implements Serializable,Parcelable {private static final long serialVersionUID = 1L;private String messageName;private String xmlPath;public OBean(){}private OBean(Parcel parcel){messageName = parcel.readString();xmlPath = parcel.readString();}@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(messageName);dest.writeString(xmlPath);}public static final Parcelable.Creator<OBean> CREATOR = new Parcelable.Creator<OBean>() {@Overridepublic OBean createFromParcel(Parcel source) {return new OBean(source);}@Overridepublic OBean[] newArray(int size) {return new OBean[size];}};public String getMessageName() {return messageName;}public void setMessageName(String messageName) {this.messageName = messageName;}public String getXmlPath() {return xmlPath;}public void setXmlPath(String xmlPath) {this.xmlPath = xmlPath;}public static long getSerialversionuid() {return serialVersionUID;}@Overridepublic int describeContents() {return 0;}}
private OBean(Parcel parcel){messageName = parcel.readString();xmlPath = parcel.readString();}@Overridepublic void writeToParcel(Parcel dest, int flags) {dest.writeString(messageName);dest.writeString(xmlPath);}
ArrayList<OBean> list = OMessageParser.getOMessageBean(context,"OMessage.xml");Intent OMIntent = new Intent();Bundle bundle = new Bundle();bundle.putParcelableArrayList("OBeanList", list);