2012-05-08 4 views
0

Может кто-нибудь объяснить, почему этот код не работает?Странное поведение getParcelableExtra (ключевой X ожидалось, но значение было Y)

Intent i = new Intent(this.context, SomeClass.class); 
HashMap<String, String> tmp1 = new HashMap<String, String>(); 
Log.d(TAG, "IN: " + String.valueOf(tmp1)); 
i.putExtra("VAR", tmp1); 
HashMap<String, String> tmp2 = i.getParcelableExtra("VAR"); 
Log.d(TAG, "OUT: " + String.valueOf(tmp2)); 

Что я ожидаю получить:

  • HashMap является parcellable. tmp1 должен соответствовать tmp2.

То, что я на самом деле получить (LogCat):

  • Debug:IN: {}
  • Предупреждение: Key VAR ожидается Parcelable но стоимость была java.util.HashMap. Значение по умолчанию <null> было возвращено.
  • Предупреждение: Попытка литой генерируется внутреннее исключение: java.lang.ClassCastException: java.util.HashMap
  • Debug:OUT: нулевой

ответ

2

Я думаю, что вы ошибаетесь, HashMap является неParcelable. Это, однако, Serializable, поэтому вы добавляете Serializable и пытаетесь прочитать его как Parcelable, что вызывает ошибку.

+0

Вы правы! Спасибо. – wrygiel

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