Android-如何传递HashMap<;字符串,字符串>;活动之间?

Android-如何传递HashMap<;字符串,字符串>;活动之间?,android,android-activity,hashmap,Android,Android Activity,Hashmap,如何将detailHashMap传递给另一个活动 HashMap<String,String> detail = new HashMap<String, String>(); detail.add("name","paresh"); detail.add("surname","mayani"); detail.add("phone","99999"); ...... ...... HashMap detail=newhashmap(); 详细信息。添加(“名称”、“帕雷

如何将
detail
HashMap传递给另一个活动

HashMap<String,String> detail = new HashMap<String, String>();
detail.add("name","paresh");
detail.add("surname","mayani");
detail.add("phone","99999");
......
......
HashMap detail=newhashmap();
详细信息。添加(“名称”、“帕雷什”);
详情。添加(“姓氏”、“玛雅尼”);
详情。添加(“电话”、“99999”);
......
......

这非常简单,所有
集合
对象都实现了
可序列化
(sp?
接口
,这意味着它们可以在
意图


使用
putExtra(字符串键,可序列化obj)
插入
HashMap
,在另一个
活动上使用
getIntent().getSerializableExtra(字符串键)
,但是,您需要将返回值强制转换为
HashMap

另一种方法是,如果信息可能被应用程序视为“全局”信息,则使用该类。您只需扩展它,然后使用标记在清单中定义自定义类。不过,要谨慎使用。滥用it的冲动很高。

解决方案: 发件人活动:

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");
HashMap HashMap=adapter.getItem(位置);
意向意向=新意向(SourceActivity.this、DestinationActivity.class);
intent.putExtra(“hashMap”,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");
Intent-Intent=getIntent();
HashMap HashMap=(HashMap)intent.getSerializableExtra(“HashMap”);

我用这个来传递HashMap

startActivity(new Intent(currentClass.this,toOpenClass.class).putExtra("hashMapKey", HashMapVariable));
并在接收活动上写入

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

因为我知道我的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();

这对你有帮助。另一种方法是将HashMap设置为公共的和静态的,在调用者活动中设置它的值,并在被调用的活动中使用它的值。在向HashMap添加值之前,请清除它以前的值。@pankaj我没有从上面的链接中得到任何信息code@Tanmay请不要更改OP的代码。改为添加概述更改的注释或答案。(拒绝编辑)@Pekka没问题。我只是想确定正确的东西。你更愿意将你的hashMap设置为公共静态吗?我可以解释它。thanx的支持和“新”信息,但我只需要在两个活动之间传递HashMap,即从活动A到活动BI。我只是想把它作为一种选择,请原谅。如果我能有一个搭扣呢?可以序列化吗?值对象只是int、String或float类型。没有自定义对象类型。请记住,映射不会序列化。如有可能,将通过内部构件进行包裹。然后你会在另一边得到一个HashMap,尽管你已经放置了LinkedHashMap或任何其他映射。“你需要强制转换返回值”——这就是我所缺少的。我得到了“Unchecked Cast”警告“Unchecked Cast”警告基本上是说“你在自己身上”;)您确定可以使用getExtras.get(“key”)获取HashMap吗?是的……只要您将“HashMap”传递给接收活动嗨,我在运行时收到包裹错误
java.lang.RuntimeException:包裹:无法封送值
我正在传递HaspMap@anishbcz JSONArray不可序列化。谢谢,伙计,虽然这是一个迟到的答复,但感谢您的帮助。:)@布巴卡尔