我需要你的帮助,我不明白发生了什么?
我试图在两个活动之间发送一个TreeMap,代码如下:
class One extends Activity{
public void send(){
Intent intent = new Intent(One.this, Two.class);
TreeMap<String, String> map = new TreeMap<String, String>();
map.put("1","something");
intent.putExtra("map", map);
startActivity(intent);
finish();
}
}
class Two extends Activity{
public void get(){
(TreeMap<String, String>) getIntent().getExtras().get("map");//Here is the problem
}
}这返回给我,HashMap不能强制转换为TreeMap。什么
发布于 2012-12-20 04:30:10
作为@Jave建议的替代方案,如果您确实需要将数据结构作为TreeMap,那么只需使用适当的构造函数,该构造函数接受另一个map作为数据源。因此,在接收端(Two)执行如下操作:
public class Two extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
TreeMap<String, String> map = new TreeMap<String, String>((Map<String, String>) getIntent().getExtras().get("map"));
}
}但是,根据您的项目,您可能不必担心确切的Map实现。因此,您可以直接转换为Map接口:
public class Two extends Activity {
@Override public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Map<String, String> map = (Map<String, String>) getIntent().getExtras().get("map");
}
}发布于 2012-12-20 04:05:41
听起来像是序列化成了一个HashMap,这就是你要得到的。我猜你只能用HashMap了。或者,您可以创建自己的帮助器类并实现Parcelable,然后按顺序序列化键/字符串。
发布于 2012-12-20 04:13:21
您可以创建一个新的TreeMap并使用putAll()-method,而不是将结果直接转换为TreeMap<String, String>:
TreeMap<String, String> myMap = new TreeMap<String, String>;
HashMap<String, String> receivedMap = getIntent().getExtras().get("map");
myMap.putAll(receivedMap);https://stackoverflow.com/questions/13960153
复制相似问题