我有一个像这样的课程:
Class persona implements Serializable {
int age;
String name;
}
我的第一个 Activity 填充了一个数组:
persona[] p;
然后,我在另一个活动中需要此信息。我怎样才能发送它?
我试着做:
Bundle b = new Bundle();
b.putSerializable("persona", p);
但我不能。
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 中更有效
您的班级将需要实施Parcelable
. 然后,您可以使用 - 方法将其打包发送Bundle.putParcelableArray()
。
此外,一般建议:类名应始终以大写开头