You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android API33中Bundle.getSerializable废弃后的报错问题求助

Android API33中Bundle.getSerializable废弃后的兼容问题解决

在Android API33中,Bundle.getSerializable(String)方法被废弃,官方新增了Bundle.getSerializable(String, Class)方法,但直接传递Object.class或Map.class会触发编译错误——本质原因是Object类和Map接口本身并未实现Serializable接口,而新方法要求传入的Class必须是Serializable的子类。以下针对两个具体问题给出解决方法:

问题1:获取Object类型的序列化对象

原有代码

Object testObj= null;
testObj = arguments.getSerializable("Sample Text");

错误修改尝试

Object testObj= null;
testObj= arguments.getSerializable("this", Object.class);

报错信息

Error : 'getSerializable(java.lang.String, java.lang.Class)' in 'android.os.Bundle' cannot be applied to '(java.lang.String, java.lang.Class<java.lang.Object>)'

解决方法

直接传入Serializable.class,再将结果转为Object类型:

Object testObj = null;
testObj = arguments.getSerializable("Sample Text", Serializable.class);

如果明确知道存入的是某个具体实现了Serializable的类(比如String、自定义实体类),也可以直接传入对应类的Class,避免强转更安全:

// 假设存入的是String类型
String testObj = arguments.getSerializable("Sample Text", String.class);

问题2:获取Map类型的序列化对象

原有代码

Map<String, Object> myArgs = (Map) bundle.getSerializable("Sample text");

错误修改尝试

Map<String, Object> myArgs = (Map) bundle.getSerializable("Sample text", Map.class);

报错信息

Error : 'getSerializable(java.lang.String, java.lang.Class)' in 'android.os.Bundle' cannot be applied to '(java.lang.String, java.lang.Class<java.util.Map>)'

解决方法

Map是接口且未实现Serializable,需要传入实现了Serializable的Map子类,比如Android中常用的HashMap.class:

Map<String, Object> myArgs = bundle.getSerializable("Sample text", HashMap.class);

如果不确定存入的具体Map实现类,也可以用Serializable.class强转:

Map<String, Object> myArgs = (Map<String, Object>) bundle.getSerializable("Sample text", Serializable.class);

内容的提问来源于stack exchange,提问作者HydTech

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.19 04:42:37