我有一个类/对象,我正在尝试制作Parcelable,所以我可以将对象保存到Bundle(实际上,我会将对象添加到Arraylist然后将此列表保存到,并将其恢复来自Bundle,包含其中的对象)。
我这样做的方法是让对象派生自Serializable。
有人建议改为使用Parcelable这个类。但是,我无法实现它,因为此类的其中一个属性是 FloatBuffer ,我无法在Parcelable类中看到将其保存到Bundle的方法。
有没有这样做?或者我运气不好?
答案 0 :(得分: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.