将 Double 的 SparseArray 写入 Parcel
Write a SparseArray of Double to Parcel
我有一个 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<java.lang.Object>) in
Parcel cannot be applied to
(android.util.SparseArray<java.lang.Double>)
Android writeSparseArray()
的 Studio javadoc 告诉我它使用 Parcel
的 writeValue()
,并且 the doc 在这个方法中说它应该工作:
The given Object
value may currently be one of the following types:
..., Double
, ...
目前,我必须将我的 SparseArray
复制到 HashMap
并使用 putSerializable()
,我知道这几乎是对理智的侮辱。
如何有效地将我的 Double SparseArray 复制到 Parcel?
您只需要将 SparseArray<Double>
更改为 SparseArray<Object>
。
尽管 Double
是 Object
的后代,但 SparseArray<Double>
不被视为 SparseArray<Object>
的后代,这就是编译时错误的原因。
我有一个 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<java.lang.Object>) in Parcel cannot be applied to (android.util.SparseArray<java.lang.Double>)
Android writeSparseArray()
的 Studio javadoc 告诉我它使用 Parcel
的 writeValue()
,并且 the doc 在这个方法中说它应该工作:
The given
Object
value may currently be one of the following types: ...,Double
, ...
目前,我必须将我的 SparseArray
复制到 HashMap
并使用 putSerializable()
,我知道这几乎是对理智的侮辱。
如何有效地将我的 Double SparseArray 复制到 Parcel?
您只需要将 SparseArray<Double>
更改为 SparseArray<Object>
。
尽管 Double
是 Object
的后代,但 SparseArray<Double>
不被视为 SparseArray<Object>
的后代,这就是编译时错误的原因。