如何通过意图发送Map <string,list <string =“” >>

时间:2018-11-06 06:55:42

标签: java android hashmap

任何人都可以帮助我通过意图发送hashmap并在其他活动中接收它吗?第一个参数是字符串,第二个参数是字符串列表,找不到任何正在努力或尝试通过发送该字符串的人用我想尝试的方式

Map<String, List<String>> map = new hashmap<>();

2 个答案:

答案 0 :(得分:2)

您将必须使用Serializable并通过意图传递映射。 数据发送器的代码示例如下:

Map map = new HashMap<String,List<String>>();

List<String> l1 = new ArrayList();

l1.add("HEllo");
l1.add("John");
l1.add("Michael");
l1.add("Jessy");

map.put("Names" , l1);

Intent intent = new Intent("CurrentActivityName".this, "DestinationActivityName".class);

intent.putExtra("Map",(Serializable) map);

startActivity(intent);

接收方代码:

Map map = new HashMap<String,List>();
map = (Map) getIntent().getSerializableExtra("Map");

现在您可以使用名为 map 的变量访问数据。

答案 1 :(得分:0)

创建实现可序列化

的模型类
public class DataWrapper implements Serializable {
   private Map map;

   public DataWrapper(Map dataMap) {
      this.map= dataMap;
   }

   public Map getData() {
       return this.map;
   }

}

对于片段

    Fragmentt recent = new Fragmentt();
    Bundle bundle = new Bundle();
    Map m = new HashMap<>();
    m.put("data", data);
    bundle.putSerializable("Data", new DataWrapper(m));
    recent.setArguments(bundle);

接收下一个片段上的数据

        DataWrapper dataWrapper = (DataWrapper) bundle.getSerializable("Data");
        map = dataWrapper.getData();

活动

        Intent intent = new Intent(this, Activity.class);
        Map map = new HashMap<>();
        map.put("Data", data);
        intent.putExtra("Data", new DataWrapper(map));
        startActivity(intent);

在下一个活动中接收数据

        Map map;
        DataWrapper dataWrapper = (DataWrapper) getIntent().getSerializableExtra("Data");
        map = dataWrapper.getData();