我的SparseArrayDouble,必须将其写入包裹中。

这是我的代码:

@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告诉我它使用ParcelwriteValue(),并且the doc在这种方法下说它应该可以工作:


  给定的Object值当前可能是以下类型之一:
  ...,Double,...


现在,我必须将SparseArray复制到HashMap使用putSerializable()中,我知道这几乎是对理智的侮辱。

如何有效地将Double SparseArray复制到包裹中?

最佳答案

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

尽管DoubleObject的后代,但是SparseArray<Double>不被视为SparseArray<Object>的后代,这就是为什么会出现编译时错误的原因。

关于android - 将Double的SparseArray写入包裹,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/43318325/

10-10 06:30