![]() |
爱喝酒的皮带 · 美团公司的开源组件有哪些 - CSDN文库· 4 月前 · |
![]() |
冷静的灯泡 · asp.net - Can not ...· 1 年前 · |
![]() |
聪明的领结 · 获取CUDA_HOME环境路径 PYTORCH· 1 年前 · |
![]() |
鬼畜的大象 · wasm系列之初探胶水代码 - 掘金· 1 年前 · |
![]() |
另类的电脑桌 · 请问如何使用ggplot2画出平滑曲线(不是 ...· 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
![]() |
爱喝酒的皮带 · 美团公司的开源组件有哪些 - CSDN文库 4 月前 |
![]() |
聪明的领结 · 获取CUDA_HOME环境路径 PYTORCH 1 年前 |
![]() |
鬼畜的大象 · wasm系列之初探胶水代码 - 掘金 1 年前 |