Android - 如何在活动之间传递HashMap <string,string>?</string,string>

时间:2011-02-14 12:22:54

标签: android android-activity hashmap

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

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

5 个答案:

答案 0 :(得分:62)

这非常简单,所有Collections个对象都会实现Serializable(sp?)interface,这意味着它们可以作为Extra Intent

内的Extras传递

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

答案 1 :(得分:57)

解决方案:

发件人活动:

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");

答案 2 :(得分:3)

我用它来传递我的HashMap

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

并在接收活动上写

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

因为我知道我的hashmap包含字符串作为值。

答案 3 :(得分:1)

另一种方法是,如果信息可能被视为应用程序的“全局”,则使用Application类。您只需对其进行扩展,然后使用&lt; application&gt;在清单中定义自定义类。标签。但是请谨慎使用。滥用它的冲动很大。

答案 4 :(得分:1)

我在这里展示示例代码供您参考。我刚试过这段代码,它对我来说很好。检查一下:

MainActivity:

    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();