[英]Passing an array of objects between two activities
我有一个数组Workout,每个元素都是Exercise类的一个实例。 MainActivity具有一个“开始”按钮,该按钮将控制权传递给StartExercise活动,该活动显示“锻炼”数组中的“锻炼”的第一个实例。
练习完成后,StartExercise活动将调用具有一分钟倒计时计时器的Rest活动。
在这一分钟结束时,Rest活动“完成”控制权返回到StartExercise活动,在该活动中显示“锻炼”数组中的下一个练习。
我想要一些有关在这些活动之间传递“锻炼”和“锻炼”对象的最佳方法的建议。 如果我在StartActivity中初始化Workout数组,则必须确保仅完成一次。 看起来笨拙。
有什么建议么?
您的自定义类必须实现Parcelable接口。 Parcelable的典型实现是:
public class MyParcelable implements Parcelable {
private int mData;
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeInt(mData);
}
public static final Parcelable.Creator<MyParcelable> CREATOR
= new Parcelable.Creator<MyParcelable>() {
public MyParcelable createFromParcel(Parcel in) {
return new MyParcelable(in);
}
public MyParcelable[] newArray(int size) {
return new MyParcelable[size];
}
};
private MyParcelable(Parcel in) {
mData = in.readInt();
}
}
然后,您可以使用以下方式发送数据:
Intent intent;
intent = new Intent(FirstActivity.this, SecondActivity.class);
intent.putParcelableArrayListExtra("Workout", workout);
startActivity(intent);
并收到:
workout = getIntent().getParcelableArrayListExtra("Workout");
注意:确保主定制类的每个嵌套类都实现了Serializable接口
使用可拆分接口实现+ Oleg提供的intent方法是实现此目的的好方法。
另一种方法是使用Singleton设计模式并将共享数据存储在该Singleton对象中。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.