Android:如何通过bundle发送带有成员对象的对象?

时间:2013-04-22 19:21:01

标签: android bundle

我找到了一些简单的示例,说明如何使用包含基本类型的对象执行此操作。我正在使用一个类,该类包含一个对象数组作为其成员之一和几个枚举成员变量。我如何存储每个对象?我假设我必须同时实现Parcelable。是否有任何例子或其他人处理过这个问题?

How to send objects through bundle

2 个答案:

答案 0 :(得分:1)

我希望JSONObject能帮到你。你可以使用put方法将其他对象放入一个json对象...你可以通过将它写入任何.txt或.json文件来发送该对象 并且您可以解析该文件并获取您已写入文件

的所有对象

答案 1 :(得分:1)

Parcel界面为您的对象数组提供了不同的可能性

writeParcelableArray(T[] value, int parcelableFlags)
writeStringArray(String[] val)
writeStringList(List<String> val)

readParcelableArray(ClassLoader loader)
readStringList(List<String> list)
readStringArray(String[] val)

对于Enum,您可以保存名称并稍后使用

重新创建
readString()
writeString(String val)

获取枚举值并使用

readInt()
writeInt(Int val)

小代码示例

public class Tag implements Parcelable {

private long id;
private String title;

// ... getter & setters & constructor ...

@Override
public int describeContents() {
    return 0;
}

@Override
public void writeToParcel(Parcel out, int flags) {
    out.writeLong(id);
    out.writeString(title);
}

public static final transient Parcelable.Creator<Tag> CREATOR = new Parcelable.Creator<Tag>() {
    public Tag createFromParcel(Parcel in) {
        return new Tag(in);
    }

    public Tag[] newArray(int size) {
        return new Tag[size];
    }
};

protected Tag(Parcel in) {
    readFromParcel(in);
}

protected final void readFromParcel(Parcel in) {
    id = in.readLong();
    title = in.readString();
}
}