putExtra treeMap返回的HashMap不能转换为TreeMap android
我需要你的帮助,我无法理解发生了什么?
我想在2个活动之间发送一个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。 什么
作为@ Jave建议的替代方案,如果您确实需要将数据结构设置为TreeMap
,则只需使用将另一个地图用作数据源的适当构造函数即可。 所以在接收端( 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");
}
}
听起来像它序列化到一个HashMap,这就是你得到的。 猜猜你必须要解决一个HashMap。 或者,您可以创建自己的助手类并实现Parcelable,然后按顺序序列化键/字符串。
不用直接将结果转换为TreeMap
,您可以创建一个新的TreeMap<String, String>
并使用putAll()
方法:
TreeMap<String, String> myMap = new TreeMap<String, String>;
HashMap<String, String> receivedMap = getIntent().getExtras().get("map");
myMap.putAll(receivedMap);
链接地址: http://www.djcxy.com/p/11641.html
上一篇: putExtra treeMap returns HashMap cannot be cast to TreeMap android