我正在用android编程(但是对于这个问题,可能没有关系)。我有一张科特林地图,定义如下:
var filters: MutableMap<String, Any?>
我需要将其传递到另一个屏幕(Android中为Activity),为此,我通常使其在Java中可序列化。但在Kotlin中,此数据结构不可序列化。让我们看看我要做什么:
var b = Bundle()
b.putSerializable("myFilter",filters) //- this gives a compile error that filters is not serializable.
我尝试调用filters.toMap(),但这也不起作用。如何在Kotlin中完成?如何将地图发送到android的另一个屏幕?
答案 0 :(得分:4)
使用HashMap代替MutableMap。
该捆绑包需要一个Serialiable对象。 MutableMap是一个接口,因此不可序列化。 HashMap是一个实现可序列化的具体类。您可以使用任何可实现可序列化的Map的具体子类
val filters: HashMap<String, Any?> = HashMap()
filters.put("a", 2)
val b = Bundle()
b.putSerializable("myFilter", filters)