【发布时间】:2013-01-31 17:22:50
【问题描述】:
我有一个SparseArray<myObject> 并希望将其存储在我活动中onSaveInstanceState 方法的捆绑包中,并将其恢复到oncreate。我发现 putSparseParcelableArray 方法将 SparseArray 放入捆绑包中,并在 onSaveInstanceState 方法中执行此操作:
bundle.putSparseParcelableArray("mySparseArray", mySparseArray);
但 eclips 显示此错误:
The method putSparseParcelableArray(String, SparseArray<? extends Parcelable>) in the type Bundle is not applicable for the arguments (String, SparseArray<myObject>)
快速解决方法是将参数 mySparsArray 转换为 SparseArray<? extends Parcelable>,但如果我这样做并在 onCreate 方法中获取它:
mySparseArray = (SparseArray<myObject>) savedInstanceState.getSparseParcelableArray("mySparseArray");
得到这个错误:
Cannot cast from SparseArray<Parcelable> to SparseArray<myObject>
如果这种方式是错误的,将 mySparseArray 放在 bundle 中的解决方案是什么? 任何帮助将非常感激。
【问题讨论】:
-
什么是
myObject?是否实现Parcelable? -
这是我定义的自定义类,没有实现任何东西。它应该实现 Parcelable 吗?
-
是的,看参数
putSparseParcelableArray,是SparseArray<? extends Parcelable>,所以只有实现了Parcelable的对象才能放入bundle。是否需要关于如何实现Parcelable的帮助,非常简单。 -
Here 就是一个例子。
-
谢谢@Wenhui,它工作正常。
标签: android android-activity bundle sparse-array