写一个Double的SparseArray到包裹

时间:2017-04-10 08:33:14

标签: android sparse-matrix parcelable

我有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复制到包裹?

1 个答案:

答案 0 :(得分:1)

您只需要从SparseArray<Double>更改为SparseArray<Object>

虽然DoubleObject的后代,但SparseArray<Double>不被视为SparseArray<Object>的后代,这就是编译时出错的原因。