
通常恢复向量很好,但有时会发生异常.
我认为它发生在活动进入后台并被破坏但我不确定.
有任何想法吗?谢谢.
Stack<LocationInfo> mLocationInfoVector;@OverrIDeprotected voID onSaveInstanceState(Bundle outState) { outState.putSerializable("locationInfos",mLocationInfoVector); super.onSaveInstanceState(outState);}@OverrIDeprotected voID onRestoreInstanceState(Bundle savedInstanceState) { if (savedInstanceState.getSerializable("locationInfos") != null) { @SuppressWarnings("unchecked") mLocationInfoVector= (Stack<LocationInfo>) savedInstanceState.getSerializable("locationInfos"); } super.onRestoreInstanceState(savedInstanceState);} 添加:
我忘了附上异常日志.
那是
java.lang.classCastException: java.util.ArrayList cannot be cast to java.util.Stack解决方法 我使用下一个代码来恢复Vector:
objects = new Vector<Object>((Collection<Object>) state.getSerializable(EXTRA_OBJECTS));
它会阻止java.lang.classCastException并保存元素顺序.
要恢复Stack,您可以使用下一个代码:
stack = new Stack<Object>();stack.addAll((Collection<Object>) state.getSerializable(EXTRA_STACK));
它的工作原理是Vector,Stack,ArrayList都在扩展Collection,你可以将你的序列化对象转换为Collection并传递给Stack或Vector addAll()方法.
总结以上是内存溢出为你收集整理的android – 在onRestoreInstanceState中发生ClassCastException全部内容,希望文章能够帮你解决android – 在onRestoreInstanceState中发生ClassCastException所遇到的程序开发问题。
如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)