Java 在两个活动之间传递对象数组

Java 在两个活动之间传递对象数组,java,android,Java,Android,我有一个数组训练,每个元素都是课堂练习的一个实例。 Main活动有一个“开始”按钮,该按钮将控制权传递给StartExercise活动,该活动显示训练数组中的第一个训练实例 练习完成后,StartExercise活动调用一个具有一分钟倒计时的Rest活动 在该分钟结束时,休息活动“完成”将控制权返回到StartExercise活动,此时将显示训练数组中的下一个练习 我想要一些关于在这些活动之间传递锻炼和锻炼对象的最佳方式的建议。如果我在StartActivity中初始化训练数组,我必须确保只执行

我有一个数组训练,每个元素都是课堂练习的一个实例。 Main活动有一个“开始”按钮,该按钮将控制权传递给StartExercise活动,该活动显示训练数组中的第一个训练实例

练习完成后,StartExercise活动调用一个具有一分钟倒计时的Rest活动

在该分钟结束时,休息活动“完成”将控制权返回到StartExercise活动,此时将显示训练数组中的下一个练习

我想要一些关于在这些活动之间传递锻炼和锻炼对象的最佳方式的建议。如果我在StartActivity中初始化训练数组,我必须确保只执行一次。这看起来很笨拙


有什么建议吗?

您的自定义类必须实现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();
    }
}
并收到:

workout = getIntent().getParcelableArrayListExtra("Workout");

注意:确保主自定义类的每个嵌套类都使用parcelable接口实现实现了Serializable接口

,Oleg提供的intent方法是实现这一点的好方法


另一种方法是使用Singleton设计模式,并将共享数据存储在Singleton对象中。

据我所知,您使用的休息活动只是一个计时器,而不使用任何锻炼或锻炼数据。您只需通过StartExercise活动中的startActivityForResult()方法启动result的Rest活动,并重写onActivityResult()方法。您可以根据运行的计时器在Rest方法中设置所需的结果(result_OK或result_CANCEL),并根据收到的结果在onActivityResult()方法中启动StartExercise活动中的下一个练习。
workout = getIntent().getParcelableArrayListExtra("Workout");