android-当不保持活动状态时,将向量还原为ArrayList onRestoreInstanceState

android-当不保持活动状态时,将向量还原为ArrayList onRestoreInstanceState,第1张

概述简单的测试用例可以100%重现.尝试在开发人员选项中启用“不要保留活动”.1-作为活动“Vector”(或Vector的任何子类)的成员.2-onSaveInstanceState使用“putSerializable”将向量成员捆绑在一起3-转到其他活动(例如,通过按下按钮并打开新活动)4-在新活动中,按返回按钮完成该

简单的测试用例可以100%重现.
尝试在开发人员选项中启用“不要保留活动”.

1-作为活动“ Vector”(或Vector的任何子类)的成员.

2-onSaveInstanceState使用“ putSerializable”将向量成员捆绑在一起

3-转到其他活动(例如,通过按下按钮并打开新活动)

4-在新活动中,按返回按钮完成该活动.

5-确保从onCreate中收到的saveInstanceState捆绑中获取矢量.

6-崩溃!

java.lang.classCastException: java.util.ArrayList cannot be cast to java.util.Vector

我是在做错什么,还是在平台上弄坏了?

解决方法:

通过捆绑包传递时,所有列表都将重建为ArrayList.

在活动之间传输数据时,捆绑中的所有可串行化的数据工具都将被写入字节流,并在新活动中重新创建它们.

当您调用bundle.getSerializable()时,它将使用android.os.Parcel中的readValue()获取值.在Parcel.java的源代码中,当对象是List的子类时,它使用readArrayList()方法创建List,而不管它是上一个活动中的Vector还是其他对象.

public final Object readValue(ClassLoader loader) {    int type = readInt();    switch (type) {        case VAL_STRING:            return readString();            ...        case VAL_List:            return readArrayList(loader);            ....    }}
总结

以上是内存溢出为你收集整理的android-当不保持活动状态时,将向量还原为ArrayList onRestoreInstanceState全部内容,希望文章能够帮你解决android-当不保持活动状态时,将向量还原为ArrayList onRestoreInstanceState所遇到的程序开发问题。

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

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

原文地址: http://www.outofmemory.cn/web/1089922.html

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

发表评论

登录后才能评论

评论列表(0条)

保存