從一個Activity向另一個活動傳遞LinkedHashMap時,我面臨一個問題。我提到所有相關的帖子都沒有解決我的問題。請幫助我。將LinkedHashMap <Object,String>從一個活動傳遞到另一個活動
活動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
類TravelMode:
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);
謝謝。它解決了這個問題。但現在訂單正在發生變化。但我想保留髮送列表的順序,這就是我使用linkedHashMap的原因。但是現在在第二個活動中,訂單被改變了。 –
順序發生了變化,因爲當您調用putExtra()時,Android會將'LinkedHashMap'轉換爲'HashMap',從而丟棄所有的順序。 –