2015-03-13 4 views
0

У меня есть класс/объект, который я пытаюсь сделать Parcelable, поэтому я могу сохранить объект в Bundle (ну, на самом деле, я добавлю объект в Arraylist, а затем сохраню этот список и восстановит его из Пакет, в комплекте с предметами, содержащимися в нем).Объект не является обязательным? Альтернативы?

Я делал это, производя класс, исходя из Serializable.

Кто-то посоветовал сделать класс Parcelable вместо этого. Однако я не могу реализовать его, потому что одно из свойств этого класса: FloatBuffer, и я не вижу способа сохранить его в Bundle в классе Parcelable.

Есть ли все равно для этого? Или мне не повезло?

ответ

0

Parcel класс имеет методы, называемые writeFloatArray(float[]), readFloatArray(float[]) и createFloatArray(), так что вы можете использовать их для хранения и извлечения поплавка массивов.
Теперь я не использовал FloatBuffer, но похоже, что у него есть метод FloatBuffer#array(), который возвращает массив, который поддерживает этот буфер. Я думаю, вы можете получить массив из буфера и сохранить его в пакете.
Позже, когда вам нужно разобрать свои данные, вы можете получить массив поплавков, который вы ранее хранили здесь, и поместить его в новый экземпляр FloatBuffer методом FloatBuffer#put(float[], int, int).

Edit: Если метод 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. 
+0

Привет @Aga спасибо за ваш ответ. Я пробовал то, что вы предлагаете (если я правильно понимаю вас), когда я пишу в Bundle, я сделал dest.writeFloatArray (myFloatBuffer.array()); Когда я запускаю код и нажимаю домашний ключ (для вызова сохранения в пакет), он выдает «UnsupportedOperationException» в java.nio.ByteBufferAsFloatBuffer 'в указанной выше строке. У тебя есть другие идеи? благодаря – Zippy

 Смежные вопросы

  • Нет связанных вопросов^_^