我在将LinkedHashMap从一个Activity传递到另一个Activity时遇到了问题。我查阅了所有相关的帖子,但没有一个能够解决我的问题。请帮帮我。
Activity 1:
这是我在进行此操作时遇到的错误。
错误:
我尝试了以下所有可能的检索方式,但仍然出现相同的错误 :(
Activity 1:
Intent mapIntent = new Intent(this,GMap.class);
LinkedHashMap<TravelMode, String> polyPoints=(LinkedHashMap<TravelMode, String>) gData.values().toArray()[0];
mapIntent.putExtra(EXTRA_MESSAGE, polyPoints);
startActivity(mapIntent);
活动2:
LinkedHashMap<Object,String>polypoint = (LinkedHashMap<Object, String>)poly.getSerializableExtra(EXTRA_MESSAGE);
这是我在进行此操作时遇到的错误。
错误:
ClassCastException: Cannot cast java.util.HashMap (id=830032266720) to java.util.LinkedHashMap
类 旅行方式:
class TravelMode implements Serializable{
/**
*
*/
private static final long serialVersionUID = 1L;
public String travelMode;
/**
* @return the travelMode
*/
public String getTravelMode() {
return travelMode;
}
/**
* @param travelMode the travelMode to set
*/
public void setTravelMode(String travelMode) {
this.travelMode = travelMode;
}
public TravelMode(String travelMode) {
super();
this.travelMode = travelMode;
}
}
我尝试了以下所有可能的检索方式,但仍然出现相同的错误 :(
HashMap<?,?>hashPoly= (HashMap<?, ?>)poly.getSerializableExtra(EXTRA_MESSAGE);
LinkedHashMap<TravelMode, String> polypoint= ((LinkedHashMap<TravelMode, String>)hashPoly);
putExtra()
时,Android会将LinkedHashMap
转换为HashMap
,从而丢弃所有的排序。 - David Wasser