1

我有一个像这样的课程:

Class persona implements Serializable {

    int age;
    String name;

}

我的第一个 Activity 填充了一个数组:

persona[] p;

然后,我在另一个活动中需要此信息。我怎样才能发送它?

我试着做:

Bundle b = new Bundle();
b.putSerializable("persona", p);

但我不能。

4

2 回答 2

8

AFAIK 没有任何方法可以将可序列化的数组放入 bundle 中,这是一种使用 parcel 的解决方案

把你的班级改成这个

import android.os.Parcel;
import android.os.Parcelable;

public class persona implements Parcelable {

    int age;
    String name;

    public static final Parcelable.Creator<persona> CREATOR = new Creator<persona>() {

        @Override
        public persona[] newArray(int size) {
            // TODO Auto-generated method stub
            return new persona[size];
        }

        @Override
        public persona createFromParcel(Parcel source) {
            // TODO Auto-generated method stub
            return new persona(source);
        }
    };

    public persona(Parcel in) {
        super();
        age = in.readInt();
        name = in.readString();
    }

    public persona() {
        super();
        // TODO Auto-generated constructor stub
    }

    @Override
    public int describeContents() {
        // TODO Auto-generated method stub
        return 0;
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeInt(age);
        dest.writeString(name);

    }
}

然后你可以像这样发送数组

Bundle b = new Bundle();

b.putParcelableArray("persona", p);

顺便说一句,使用 Parcelable 而不是 Serializable 在 Android 中更有效

于 2012-12-08T14:50:13.843 回答
1

您的班级将需要实施Parcelable. 然后,您可以使用 - 方法将其打包发送Bundle.putParcelableArray()

此外,一般建议:类名应始终以大写开头

于 2012-12-08T14:50:39.863 回答