如何在活动之间传递HashMap <String,String>

如何将detail HashMap传递给另一个Activity?

 HashMap<String,String> detail = new HashMap<String, String>(); detail.add("name","paresh"); detail.add("surname","mayani"); detail.add("phone","99999"); ...... ...... 

Solutions Collecting From Web of "如何在活动之间传递HashMap <String,String>"

这很简单,所有的Collections对象都实现了Serializable (sp?) interface ,这意味着它们可以在Intent作为Extras传递

使用putExtra(String key, Serializable obj)插入HashMap并在另一个Activity使用getIntent().getSerializableExtra(String key) ,但是需要将返回值转换为HashMap

解:

发件人活动:

 HashMap<String, String> hashMap= adapter.getItem(position); Intent intent = new Intent(SourceActivity.this, DestinationActivity.class); intent.putExtra("hashMap", hashMap); startActivity(intent); 

接收者活动:

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

另一种方法是如果信息是可能被认为是应用程序的“全局”的东西,那么使用应用程序类。 您只需扩展它,然后使用<application>标记在清单中定义您的自定义类。 尽pipe如此,请谨慎使用。 滥用的冲动是很高的。

我用这个来传递我的HashMap

 startActivity(new Intent(currentClass.this,toOpenClass.class).putExtra("hashMapKey", HashMapVariable)); 

并在接收活动上写

 HashMap<String,String> hm = (HashMap<String,String>) getIntent().getExtras().get("hashMapKey"); 

因为我知道我的hashmap包含string作为值。

在这里,我展示了示例代码供您参考。 我只是试过这个代码,对我来说工作正常。 检查这个:

主要活动 :

  final HashMap<Integer, String> hashMap = new HashMap<Integer, String>(); hashMap.put(1, "Hi"); button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { // TODO Auto-generated method stub Intent intent = new Intent(MainActivity.this, SecondActivity.class); intent.putExtra("h", hashMap); startActivity(intent); } }); 

SecondActivity:

 Toast.makeText(SecondActivity.this,"Hi " + getIntent().getSerializableExtra("h").toString(),Toast.LENGTH_SHORT).show();