我已经将targetSdkVersion
和compileSdkVersion
升级到33
。
我现在收到警告,告诉我getSerializableExtra(name:)和getParcelableExtra(name:)方法已被弃用。
我从Intent类的文档中检查并确认了这两个方法确实已被弃用。
文档建议我使用新的getSerializableExtra(name:clazz:)和getParcelableExtra(name:clazz:)方法。
谁能帮我用新方法?
警告示例
1.获取Object
时的警告:
的数据
1.获取List
或ArrayList
时出现警告:
的
8条答案
按热度按时间du7egjpx1#
这就是我使用的:
字符串
我也在这里为getParcelable编写了相同的代码,并请求将其添加到Support libraries directly中。
7ajki6be2#
方法
T getSerializableExtra(String, Class<T>)
是从android 33引入的。所以你应该为使用Android低于33的设备使用if块。字符串
然后你可以像这样在你的活动中使用它:
型
aij0ehis3#
但是,Mohamad Seyedi's回答完成了这项工作。但在**
onActivityResult()
**获取intent数据时失败。**
onActivityResult()
**内部无法使用Activity的Intent获取数据。下面是我得到的解决方案。解决方案1:使用扩展函数:
字符串
用法:
型
解决方案2:使用常规函数:
型
用法:
型
fslejnso4#
对于我们这些仍然使用Java的人来说,这个函数可以做到这一点:
字符串
yhxst69z5#
受穆罕默德回答的启发,你可以做一个延伸
字符串
在任何地方都这样称呼它:
型
f0brbegy6#
我自己还没用过呢。正如文档所述,更新后的方法是
所以你可以使用它如下,我想.
字符串
hm2xizp97#
字符串
然后创建该函数
型
iqxoj9l98#
可以使用top函数序列化参数
但我在序列化对象列表时遇到问题
您可以使用这种方式放置和获取序列化的参数数据
由于List不是可序列化类,因此需要将其转换为支持可序列化的Array List
这些函数用于可序列化
字符串
这样handle就把对象的序列化列表
型
现在可以通过这种方式序列化列表对象
型