Android - 如何在活动之间传递 HashMap<String,String>?
Posted
技术标签:
【中文标题】Android - 如何在活动之间传递 HashMap<String,String>?【英文标题】:Android - How to pass HashMap<String,String> between activities? 【发布时间】:2011-06-26 21:35:03 【问题描述】:如何将detail
HashMap 传递给另一个Activity?
HashMap<String,String> detail = new HashMap<String, String>();
detail.add("name","paresh");
detail.add("surname","mayani");
detail.add("phone","99999");
......
......
【问题讨论】:
***.com/questions/4154744/… 这将对您有所帮助。并且以另一种方式使您的 HashMap 成为公共和静态的,在调用者活动中设置其值并将其值用于被调用活动。在向 HashMap 添加值之前,请清除其先前的值。 @pankaj 我没有从上面的链接代码中得到任何东西 @Tanmay 请不要更改 OP 的代码。添加评论或答案来概述更改。 (拒绝编辑) @Pekka 没问题。我只是想确定正确的事情 你可以将你的 hashMap 设为 public static 吗?我可以解释一下。 【参考方案1】:这很简单,所有Collections
对象都实现Serializable
(sp?)interface
,这意味着它们可以作为附加在Intent
中传递
使用putExtra(String key, Serializable obj)
插入HashMap
,另一个Activity
使用getIntent().getSerializableExtra(String key)
,但您需要将返回值转换为HashMap
。
【讨论】:
对不起。如果我可以有一个 HaspMap另一种方法是,如果信息可能被视为应用程序的“全局”信息,则使用Application 类。您只需扩展它,然后使用 标记在清单中定义您的自定义类。不过,请谨慎使用。滥用它的冲动很高。
【讨论】:
感谢支持和“新”信息,但我只需要在两个活动之间传递 HashMap,即从活动 A 到活动 B 我想通了。只是想提供它作为替代品。【参考方案3】:解决方案:
发件人活动:
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");
【讨论】:
您好,我在运行时收到包裹错误。java.lang.RuntimeException: Parcel: unable to marshal value
我正在传递 HaspMap我用它来传递我的 HashMap
startActivity(new Intent(currentClass.this,toOpenClass.class).putExtra("hashMapKey", HashMapVariable));
并在接收活动上写
HashMap<String,String> hm = (HashMap<String,String>) getIntent().getExtras().get("hashMapKey");
因为我知道我的 hashmap 包含字符串作为值。
【讨论】:
您确定可以使用 getExtras.get("key") 获取 HashMap这里我展示了示例代码供您参考。我刚刚尝试了这段代码,它对我来说很好。检查这个:
主要活动:
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);
);
第二个活动:
Toast.makeText(SecondActivity.this,"Hi " + getIntent().getSerializableExtra("h").toString(),Toast.LENGTH_SHORT).show();
【讨论】:
以上是关于Android - 如何在活动之间传递 HashMap<String,String>?的主要内容,如果未能解决你的问题,请参考以下文章
Android - 如何在活动之间传递 HashMap<String,String>?
Android Studio中如何在Activity跳转之间传递数据