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

getParcelableArrayListExtra已废弃,API33下的替代方案是什么?

解决方案

当targetSdkVersion与compileSdkVersion升级至33后,getParcelableArrayListExtra<T>方法因类型安全隐患被标记为过时,官方推荐使用带显式Class参数的重载方法,具体修改如下:

原代码:

val picList = result.data?.getParcelableArrayListExtra<PageNumberFile>(KEY_CAM_PIC_LIST)

修改后代码:

val picList = result.data?.getParcelableArrayListExtra(KEY_CAM_PIC_LIST, PageNumberFile::class.java)

核心原因

  • 旧泛型方法依赖Java类型擦除机制,编译阶段无法校验返回集合的元素类型,运行时可能出现类型转换异常
  • 新重载方法通过传入Class<T>实例,让系统在编译、运行阶段都能严格校验类型,彻底消除类型安全警告

如果你的PageNumberFile实现的是Serializable接口而非Parcelable,可使用以下方式处理(但仍优先推荐Parcelable方案,因为Android平台下Parcelable序列化效率更高):

val picList = result.data?.getSerializableExtra(KEY_CAM_PIC_LIST) as? ArrayList<PageNumberFile>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.08 20:55:22