android – 在onRestoreInstanceState中发生ClassCastException

android – 在onRestoreInstanceState中发生ClassCastException,第1张

概述ClassCastException随机发生以恢复onRestoreInstanceState()中的Vector. 通常恢复向量很好,但有时会发生异常. 我认为它发生在活动进入后台并被破坏但我不确定. 有任何想法吗?谢谢. Stack<LocationInfo> mLocationInfoVector;@Overrideprotected void onSaveInstanceState( ClassCastException随机发生以恢复onRestoreInstanceState()中的Vector.
通常恢复向量很好,但有时会发生异常.

我认为它发生在活动进入后台并被破坏但我不确定.

有任何想法吗?谢谢.

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所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/web/1138728.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-05-31
下一篇2022-05-31

发表评论

登录后才能评论

评论列表(0条)

    保存