0

我有一个类/对象,我正在尝试使其成为 Parcelable,因此我可以将对象保存到 Bundle 中(嗯,事实上,我会将对象添加到 Arraylist,然后将此列表保存到其中,并从 Bundle 中恢复它, 完成其中包含的对象)。

我通过使对象派生自Serializable的类来做到这一点。

有人建议改为使用 Parcelable 类。但是,我无法实现它,因为此类的属性之一是FloatBuffer,并且我看不到将其保存到 Parcelable 类中的 Bundle 的方法。

有没有办法做到这一点?还是我运气不好?

4

1 回答 1

0

Parcel类具有称为writeFloatArray(float[]),readFloatArray(float[])和的方法createFloatArray(),因此您可以使用它们来存储和检索浮点数组。
现在,我没有使用FloatBuffer,但它看起来有方法FloatBuffer#array()返回支持此缓冲区的数组。我认为您可以从缓冲区中获取数组并将其存储在包裹中。
稍后,当您需要解包数据时,您可以检索之前存储在这里的浮点数组,并通过FloatBuffer#put(float[], int, int)方法将其放入新FloatBuffer实例中。

编辑:如果该array()方法没有给您想要的结果,您可以尝试以下方法:

final int size = buffer.remaining();
final float[] floatsArray = new float[size];
buffer.get(floatsArray); 
// now floatsArray contains the values from buffer,
// you can safely put it into the Parcel.
于 2015-03-13T19:21:29.450 回答