2013-11-01 2 views
0

Я пытаюсь передать Hashmap пользовательских объектов с намерением.Android - передача hashmap через намерение

Я пытаюсь использовать аргумент, так как это то, что я читаю, является правильным способом делать вещи в андроиде (то есть, по возможности, по сериализуемым).

Однако, когда я пытаюсь получить hashmap с использованием getParcelable, он не может найти мой hashmap в намерении, но getSerializable может.

Можно ли использовать сериализуемое для hashmaps? Это мой единственный вариант?

+0

Вы можете кодировать простые карты как JSON или нас e статические переменные (duh). –

+1

Возможные дублируется: - http://stackoverflow.com/questions/3544781/is-it-possible-to-create-a-hashmap-that-is-parcelable-on-android - HTTP : //stackoverflow.com/questions/5566921/androidpassing-a-hash-map-between-activities – amatellanes

+0

Можете ли вы опубликовать свой код для чтения и письма дословно. – schwiz

ответ

3

Вы можете, конечно, сериализовать свою карту, если ваши объекты сериализуемы. То, что вы также можете сделать, это создать отдельный singleton-класс (DataStore или так?), Который сохранил ваши данные. Таким образом, вам не нужно передавать данные с Activity на Activity. Или, что еще проще, сохраните данные в общедоступной статической переменной.

+0

Возможно, я должен был добавить, что эти данные начинаются в любом количестве приложений, которые включают одну общую библиотеку. Данные передаются в действия внутри библиотеки, поэтому я не думаю, что могу использовать публичный статический, поскольку я не буду точно знать название активности, так как это возможно, что каждое приложение будет иметь различную активность, в которой происходят данные –

+0

Никто не сказал, что данные необходимо сохранить в Activity. В библиотеке можно создать класс хранения данных. Либо используйте шаблон singleton для него, либо статические переменные. – SimonSays

+0

Не хранится само по себе, но если я передам его из Activity A (в локальном приложении) в Activity B в библиотеке, то мне, по крайней мере, нужно извлечь его из намерения из A и поместить его в намерение в B. Да, я мог бы просто выразить это прямо от А до Б, но в любом случае мне нужно передать его от намерения до намерения. Я хотел бы просто прочитать хэш-карту в локальном приложении, непосредственно в библиотеке –

0

java.util.HashMap не Parcelable, так что ваши варианты:

  • использование ставить/getSerializable, который будет хорошо работать в вашем приложении
  • закодировать HashMap, как JSON или другой remotable формат при отправке за пределы вашего приложения
  • вынимает Запись карты по одному и поместить их в Bundle непосредственно (при условии, что они имеют строковые ключи)
Смежные вопросы