2011-09-28 61 views

回答

144

Java的HashMap類擴展了Serializable接口,使用Intent.putExtra(String, Serializable)方法可以很容易地將它添加到意圖中。

在接收意圖的活動/服務/廣播接收器中,您隨後使用您使用putExtra的名稱呼叫 Intent.getSerializableExtra(String)

例如,發送意圖時:

HashMap<String, String> hashMap = new HashMap<String, String>(); 
hashMap.put("key", "value"); 
Intent intent = new Intent(this, MyOtherActivity.class); 
intent.putExtra("map", hashMap); 
startActivity(intent); 

然後在接收活動:

protected void onCreate(Bundle bundle) { 
    super.onCreate(savedInstanceState); 

    Intent intent = getIntent(); 
    HashMap<String, String> hashMap = (HashMap<String, String>)intent.getSerializableExtra("map"); 
    Log.v("HashMapTest", hashMap.get("key")); 
} 
+16

請注意,HashMaps序列化。地圖,顯然,不。 –

+3

Map是一個接口 - 你不能序列化一個接口,只能對其進行特定的實現。在這種情況下,Map並沒有實現/擴展Serializable接口本身,所以無論是否需要實現Serializable,都取決於具體的實現。而HashMap的確實現了它。 – JesusFreke

+1

嗨,我發送一個HashMap 作爲從另一個活動的結果開始的活動I中的可序列化額外。所以我回到了結果的意圖。當我嘗試從意圖中檢索HashMap時,(HashMap )intent.getSerializableExtra(「map」);返回null。是因爲我使用HashMap 還是因爲我從一個爲另一個Activity的結果創建的Activity發送它? – marienke

0

我希望這必須工作了。

在接收活動

Intent intent = getIntent(); 
    HashMap<String, ArrayList<String>> hashMap = (HashMap<String, ArrayList<String>>) intent.getSerializableExtra("selectedBanksAndAllCards"); 

當我發送像下面一個HashMap的發送活動

Intent intent = new Intent(Banks.this, Cards.class); 
          intent.putExtra("selectedBanksAndAllCards", (Serializable) selectedBanksAndAllCards); 
          startActivityForResult(intent, 50000); 

Map<String,ArrayList<String>> selectedBanksAndAllCards = new HashMap<>(); 

希望它會HEL p爲某人。

相關問題