2017-04-10 10 views
1

SparseArrayDoubleです。私はそれをParcelに書き込む必要があります。ここで二重のSparseArrayを小包に書き込む

は私のコードです:

@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の >)で パーセルは適用できません (android.util.SparseArray <java.lang.Double>)

writeSparseArray()のためのAndroidのスタジオjavadocは、それがParcelwriteValue()を使用することを私に伝え、この方法でthe docは、それが動作する必要があることを述べている:

与えObject値は現在、次のタイプのものであってもよいです: ...、Double、...今の

、私は私のSparseArrayにコピーする必要があります0使用putSerializable()、私が知っていることは、ほぼ正気の侮辱です。

Double SparseArrayをパーセルに効率的にコピーするにはどうすればよいですか?

答えて

1

SparseArray<Double>からSparseArray<Object>に変更するだけで済みます。

DoubleObjectの子孫ですが、SparseArray<Double>SparseArray<Object>の子孫とはみなされません。そのため、コンパイル時にエラーが発生します。

+1

ありがとう、それは働いた。私はなぜ署名が 'SparseArray 'で、 'SparseArray <?オブジェクトを拡張する> 'しかし... –

関連する問題