【问题标题】:How to store SparseArray<Double> in Bundle?如何将 SparseArray<Double> 存储在 Bundle 中?
【发布时间】:2018-01-17 18:57:27
【问题描述】:

如何将 SparseArray 存储在 bundle 中?

public void onSaveInstanceState(Bundle savedState) {
    // ...
    SparseArray<Double> values = mAdapter.getValues();
    savedState.putSparseParcelableArray(values);

上面的代码导致编译错误,说

“Bundle中的SparseArray extends Parcelable>不能应用于SparseArray”。

如何解决?

【问题讨论】:

    标签: android android-fragments sparse-matrix parcelable parcel


    【解决方案1】:

    根据docs SparseArray&lt;? extends Parcelable&gt; value) 的意思是类及其子类型是允许的,但Double 没有实现Parcelable 所以你不能将它与捆绑持久性一起使用,尽管你可以让你的自定义bean类对象实现parcelable

    【讨论】:

      【解决方案2】:

      为了保存 SparseArray,将此数据放入列表中并将该列表保存到 outState 包中。

      然后在 onRestoreInstanceState 中,检索列表并再次将其转换为 SparseArray。

      for detailed explaination

      【讨论】:

      • 这种方式会松动一个索引,在某些情况下这是有意义的(在范围内有孔)
      猜你喜欢
      • 2017-09-05
      • 1970-01-01
      • 2020-02-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多