如何将一个对象数组从一个Activity发送到另一个Activity?

joa*_*pez 1 android bundle class

我有一个类:

Class persona implements Serializable {

    int age;
    String name;

}
Run Code Online (Sandbox Code Playgroud)

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

persona[] p;
Run Code Online (Sandbox Code Playgroud)

然后,我需要另一个Activity中的这个信息.我怎么发送它?

我试着做:

Bundle b = new Bundle();
b.putSerializable("persona", p);
Run Code Online (Sandbox Code Playgroud)

但我不能.

con*_*ius 8

AFAIK是一种将可序列化数组放入bundle中的方法,无论如何都是使用包裹的解决方案

改变你的课程

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);

    }
}
Run Code Online (Sandbox Code Playgroud)

那么你可以这样发送数组

Bundle b = new Bundle();

b.putParcelableArray("persona", p);
Run Code Online (Sandbox Code Playgroud)

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