getParcelableExtra的奇怪行为(Key X期望Parcelable但值为Y)

时间:2012-05-08 12:56:00

标签: android android-intent parcelable

有人可以解释为什么这段代码不起作用吗?

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):

  • 调试: IN:{}
  • 警告:密钥VAR预计Parcelable,但值为java.util.HashMap。返回了默认值<null>
  • 警告:尝试投射生成的内部异常:java.lang.ClassCastException: java.util.HashMap
  • 调试: OUT:null

1 个答案:

答案 0 :(得分:2)

我认为你错了,HashMap Parcelable。但是SerializableSerializable,因此您要添加Parcelable个额外内容并尝试将其读作{{1}},这会导致错误。