Я никогда не использовал Parcelable
сам, но после прочтения JavaDoc я думаю, что это, как правило, будет работать:
- Создайте класс
Foo implements Parcelable
, который переносит double[]
, поэтому вы можете использовать
Parcel
#[
create
|
write
]doubleArray()
, а затем - Создайте класс
Bar implements Parcelable
, который включает Foo[]
, так что вы можете использовать
Parcel
#[
create
|
write
]TypedArray()
(Извините, комментарий немного длинный, я рад удалить его, если он бесполезен.)
Вот так (скомпилировано, но не проверено, нет @Overrides
, предостережение emptor и еще):
public class Foo implements Parcelable {
private double[] mData;
// Not really sure what bitmask to use for a double[]...
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeDoubleArray(mData);
}
public static final Creator<Foo> CREATOR = new Creator<Foo>() {
public Foo createFromParcel(Parcel in) {
return new Foo(in);
}
public Foo[] newArray(int size) {
return new Foo[size];
}
};
private Foo(Parcel in) {
mData = in.createDoubleArray();
}
}
и
public class Bar implements Parcelable {
private Foo[] mData;
// Same as above
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel out, int flags) {
out.writeTypedArray(mData, 0);
}
public static final Creator<Bar> CREATOR = new Creator<Bar>() {
public Bar createFromParcel(Parcel in) {
return new Bar(in);
}
public Bar[] newArray(int size) {
return new Bar[size];
}
};
private Bar(Parcel in) {
mData = in.createTypedArray(Foo.CREATOR);
}
}