gpt4 book ai didi

android - SparseArray 错误 : Call requires API level S

转载 作者:行者123 更新时间:2023-12-04 23:51:55 24 4
gpt4 key购买 nike

将 compileSdkVersion 增加到 31 (Android 12) 后,执行 lint 检查时,会出现以下问题:
错误:调用需要 API 级别 S(当前最小值为 23):android.util.SparseArray#set [NewApi]
增加这个后有人有类似的问题,为什么会发生?

最佳答案

set在 Android 12 中添加,只是 put 的副本功能,您可以自由使用。
他们使用不同名称复制函数的原因是数组访问语法可以在 Kotlin 中工作。当 Kotlin 编译器在 Java 类中看到名为 set 的函数时和两个参数,它允许使用这样的数组语法调用它:

mySparseArray.put(3, someObject)

// is the same as

mySparseArray[3] = someObject
但是由于他们只在 Android 12 中添加了它,如果您的目标是低于 Android 12(sdk 版本 31)的任何东西,使用新功能是不切实际的,因此需要几年时间才能变得有用。
在我看来,将这个函数添加到基类是一个错误,因为现在几年内不可能使用数组访问语法,直到最终使 SDK 31 成为 minSdkVersion 变得明智。 .在他们添加之前,可以使用扩展函数来获得此功能,但现在不能使用扩展函数,因为它的名称会影响基类中的名称。此外,lint 不会显示数组访问语法的错误,因此如果您使用它,它将在运行时崩溃。他们应该把它作为扩展函数放在 androidx-core-ktx 中。 .
编辑:看起来这可能是 fixed in an upcoming version ,如果我正确理解“反向移植”。

关于android - SparseArray 错误 : Call requires API level S,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/69132082/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com