无法通过意图传递Hashmap

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了无法通过意图传递Hashmap相关的知识,希望对你有一定的参考价值。

我正在尝试将Hashmap传递给另一个意图,但我收到错误:

Cannot resolve method 'putExtra(java.lang.String,java.util.Map<String,android.content.pm.ApplicationInfo>

码:

Map<String, ApplicationInfo> map = returnedMap;
Intent i = new Intent(LoadingScreen.this, DisplayClass.class);
i.putExtra("total",total);
i.putExtra("map", map);
startActivity(i);
答案

Intent.putExtra只接受原始类型/ ParcelableSerializable对象。

因为你持有Map,所以很容易将它作为HashMap发送,因为HashMap实现了Serializable接口。

// If your originial Map is not a HashMap, you have to convert it
// HashMap<String, ApplicationInfo> map = new HashMap<>(returnedMap);
// If it's already an HashMap, you have to cast it
// HashMap<String, ApplicationInfo> map = (HashMap)returnedMap;
i.putExtra("map", map);

在接收方:

HashMap<String, ApplicationInfo> map = (HashMap<>)intent.getSerializableExtra("map")
另一答案

你需要创建一个HashMap原因HashMap是实现Serializable的类。 Mapinterface的父母HashMap

HashMap<String, ApplicationInfo> map = returnedMap;
Intent i = new Intent(LoadingScreen.this, DisplayClass.class);
i.putExtra("total",total);
i.putExtra("map", map);
startActivity(i);
另一答案

由于HashMaps序列化而地图没有,因此请尝试执行以下段,因为您正在使用

Intent.putExtra(String,Serializable)方法:

HashMap<String, ApplicationInfo> hashMap = returnedMap;

以上是关于无法通过意图传递Hashmap的主要内容,如果未能解决你的问题,请参考以下文章

通过 Intent 传递自定义对象列表

将微调器值从片段传递到活动

从片段中获取意图值后,我如何在 recyclerview 项目中实现单击

如何从片段 KOTLIN 中调用意图 [重复]

从活动接收意图后如何创建片段?

如何在导航抽屉中的两个片段之间传递数据