繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM