Android getParcelableExtra的奇怪行为(键X应为ParcelableExtra,但值为Y)

Android getParcelableExtra的奇怪行为(键X应为ParcelableExtra,但值为Y),android,android-intent,parcelable,Android,Android Intent,Parcelable,有人能解释一下为什么这个代码不起作用吗 Intent i=新的Intent(this.context,SomeClass.class); HashMap tmp1=新的HashMap(); Log.d(标记“IN:”+String.valueOf(tmp1)); i、 putExtra(“VAR”,tmp1); HashMap tmp2=i.getParcelableExtra(“VAR”); Log.d(标记“OUT:+String.valueOf(tmp2)); 我期望得到的是: Has

有人能解释一下为什么这个代码不起作用吗

Intent i=新的Intent(this.context,SomeClass.class);
HashMap tmp1=新的HashMap();
Log.d(标记“IN:”+String.valueOf(tmp1));
i、 putExtra(“VAR”,tmp1);
HashMap tmp2=i.getParcelableExtra(“VAR”);
Log.d(标记“OUT:+String.valueOf(tmp2));
我期望得到的是:

  • HashMap是可分组的<代码>tmp1应等于
    tmp2
我实际得到的(LogCat):

  • 调试:在:{}
  • 警告:键
    VAR
    应为
    Parcelable
    ,但值为
    java.util.HashMap
    。返回了默认值
  • 警告:尝试强制转换生成的内部异常:
    java.lang.ClassCastException:java.util.HashMap
  • 调试:OUT:null

我想你弄错了,
HashMap
不是
Parcelable
。但是,它是可序列化的,因此您将一个可序列化的放在了额外的位置,并试图将其作为一个可打包的读取,这导致了错误。

我认为您错了,
HashMap
不是可打包的。但是,它是可序列化的,因此您要额外放置一个可序列化的,并试图将其作为可打包的读取,这会导致错误