【问题标题】:Write a SparseArray of Double to Parcel将 Double 的 SparseArray 写入 Parcel
【发布时间】:2017-09-05 05:04:25
【问题描述】:

我有一个 SparseArrayDouble,我必须将其写入 Parcel。

这是我的代码:

@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 复制到 Parcel 中?

【问题讨论】:

    标签: android sparse-matrix parcelable


    【解决方案1】:

    您只需将SparseArray&lt;Double&gt; 更改为SparseArray&lt;Object&gt;

    虽然DoubleObject 的后代,但SparseArray&lt;Double&gt; 不被视为SparseArray&lt;Object&gt; 的后代,这就是编译时错误的原因。

    【讨论】:

    • 非常感谢,它成功了。我想知道为什么签名是SparseArray&lt;Object&gt; 而不是SparseArray&lt;? extends Object&gt;...
    猜你喜欢
    • 2018-01-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-07-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多