酒量大的西红柿 · 江西南昌:噪音污染维权难 ...· 1 月前 · |
憨厚的鼠标垫 · 【健康】心火、肺火、胃火,不同食疗方降不同部 ...· 4 月前 · |
没读研的便当 · 政务公开主题日_邵东市人民政府· 9 月前 · |
玩命的苦瓜 · APNs通知与应用内消息(推送通知和透传消息 ...· 10 月前 · |
乐观的炒饭 · 宾利假装红旗,这辆“军牌”车的主人查清楚了! ...· 1 年前 · |
我已将
33
.和
targetSdkVersion
和
compileSdkVersion
升级为
现在,警告
getSerializableExtra
和
getParcelableExtra
是不可取的。
我检查并确认了 从这里开始 ,它是不推荐的。
建议使用
、更新的
、
getSerializableExtra
和
getParcelableExtra
。任何人都可以帮助我使用更新的方法。
Object
时发出警告
List
或
ArrayList
时发出警告
发布于 2022-08-30 13:32:52
这就是我所用的:
inline fun <reified T : Serializable> Bundle.serializable(key: String): T? = when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> getSerializable(key, T::class.java)
else -> @Suppress("DEPRECATION") getSerializable(key) as? T
inline fun <reified T : Serializable> Intent.serializable(key: String): T? = when {
Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU -> getSerializableExtra(key, T::class.java)
else -> @Suppress("DEPRECATION") getSerializableExtra(key) as? T
}
我在这里也为 getParcelable 编写了相同的代码,并要求将其添加到 直接支持库 中
发布于 2022-07-16 11:22:54
方法
T getSerializableExtra(String, Class<T>)
是从Android33中引入的。所以你应该在33以下的android设备上使用一个if块。
fun <T : Serializable?> getSerializable(activity: Activity, name: String, clazz: Class<T>): T
return if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
activity.intent.getSerializableExtra(name, clazz)!!
activity.intent.getSerializableExtra(name) as T
}
然后你可以像这样在你的活动中使用它:
val myPOJOClass = getSerializable(this, "my_intent_key", MyPOJOClass::class.java)
发布于 2022-08-24 08:37:20
然而,
穆罕默德·赛义迪
的答案完成了这一工作。但是在从
onActivityResult()
.获取意图数据的情况下,它失败了
我们无法在
onActivityResult()
.中使用活动的意图获取数据下面是我找到的解决办法。
解决方案1:使用扩展函数:
fun <T : Serializable?> Intent.getSerializable(key: String, m_class: Class<T>): T {
return if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.TIRAMISU)
this.getSerializableExtra(key, m_class)!!
this.getSerializableExtra(key) as T
没读研的便当 · 政务公开主题日_邵东市人民政府 9 月前 |