注:尽量使用HashMap,而不使用Hashtable
问题描述:定义了一个 Hashtable 类型的哈希表,想把它作为参数从A传递到B中,运行出错。
解决办法:使用“HashMap”来定义参数,而不使用“Hashtable”,将以下代码中的“Hashtable”替换成“HashMap”,则工作正常。
代码如下:
发送端代码如下:
Intent wlIntent = new Intent(); Bundle bData = new Bundle(); bData.putSerializable("serial", hashtable);
wlIntent.setClass(A.this, B.class); wlIntent.putExtras(bData); startActivity(wlIntent);
|
接收端代码如下:
try {
Bundle bundle = getIntent().getExtras();
Serializable data = bundle.getSerializable("serial");
if (data != null) {
table = (Hashtable<Long, String>)data;
} else {
return;
}
} catch (Exception e) {
Log.v("test", e.toString());
}
|
结果发现运行出错,提示错误“java.lang.ClassCastException: java.util.HashMap"
貌似在对 “data”进行强制类型转换时,android使用了“HashMap”来代替“Hashtable”进行了类型转换,导致出错。
阅读(4942) | 评论(0) | 转发(0) |