我的SparseArray
为Double
,必须将其写入包裹中。
这是我的代码:
@Override
public void writeToParcel(Parcel dest, int flags) {
SparseArray<Double> spa = new SparseArray<>();
spa.put(1, 0.8d);
spa.put(5, 6.4d);
spa.put(89, 0.8d);
dest.writeSparseArray(spa);
}
这将无法编译,并显示以下错误:
writeSparseArray(android.util.SparseArray )在
包裹无法应用于
(android.util.SparseArray )
用于
writeSparseArray()
的Android Studio javadoc告诉我它使用Parcel
的writeValue()
,并且the doc在这种方法下说它应该可以工作:给定的
Object
值当前可能是以下类型之一:...,
Double
,...现在,我必须将
SparseArray
复制到HashMap
使用putSerializable()
中,我知道这几乎是对理智的侮辱。如何有效地将Double SparseArray复制到包裹中?
最佳答案
您只需要从SparseArray<Double>
更改为SparseArray<Object>
。
尽管Double
是Object
的后代,但是SparseArray<Double>
不被视为SparseArray<Object>
的后代,这就是为什么会出现编译时错误的原因。
关于android - 将Double的SparseArray写入包裹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43318325/