gpt4 book ai didi

android - ClassCastException 发生在 onRestoreInstanceState

转载 作者:塔克拉玛干 更新时间:2023-11-02 09:04:13 25 4
gpt4 key购买 nike

ClassCastException随机出现,用于在onRestoreInstanceState()中恢复Vector。恢复vector一般都很好完成,但有时会出现异常。

我认为当 Activity 进入后台并被销毁时会发生这种情况,但我不确定。

有什么想法吗?谢谢。

Stack<LocationInfo> mLocationInfoVector;

@Override
protected void onSaveInstanceState(Bundle outState) {
outState.putSerializable("locationInfos", mLocationInfoVector);

super.onSaveInstanceState(outState);
}

@Override
protected 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 = new Stack<Object>();
stack.addAll((Collection<Object>) state.getSerializable(EXTRA_STACK));

之所以有效,是因为 Vector、Stack、ArrayList 正在扩展 Collection,您可以将序列化对象转换为 Collection 并传递给 Stack 或 Vector addAll() 方法。

关于android - ClassCastException 发生在 onRestoreInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11279911/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com