【发布时间】:2022-08-17 20:09:52
【问题描述】:
从 API 级别 33 开始,Bundle 类的 getSerializable(String) 方法已被弃用。文档建议改用getSerializable(String, Class)。但该功能仅适用于 API 级别 33。
我当前的代码:
val model = args.getSerializable(\"key\") as? Model
这是现在应该的样子吗?
val model = args.customGetSerializable<Model>(\"key\")
@Suppress(\"DEPRECATION\")
inline fun <reified T : Serializable> Bundle.customGetSerializable(key: String): T? {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU) {
getSerializable(key, T::class.java)
} else {
getSerializable(key) as? T
}
}
-
一个好点。也许也使用
Parcelable? -
好建议。我实际上将 Parcelable 用于更多其他模型。在这种情况下,上面的代码段实际上是用于枚举,因此示例中的“模型”是一个枚举。你怎么看待这件事?我应该坚持上面的代码还是用这个 stackoverflow.com/a/13385129/6272369 替换它?
标签: android kotlin bundle serializable