我有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&lt; java.lang.Object &gt;)in 包裹无法应用于 (android.util.SparseArray&LT; java.lang.Double中&GT)
writeSparseArray()
的Android Studio javadoc告诉我它使用Parcel
&#39; writeValue()
,the doc此方法说它应该有效:
给定的
Object
值目前可能是以下类型之一: ......,Double
,...
目前,我必须将SparseArray
复制到HashMap
使用putSerializable()
,我知道这几乎是对理智的侮辱。
如何有效地将Double SparseArray复制到包裹?
答案 0 :(得分:1)
您只需要从SparseArray<Double>
更改为SparseArray<Object>
。
虽然Double
是Object
的后代,但SparseArray<Double>
不被视为SparseArray<Object>
的后代,这就是编译时出错的原因。