gpt4 book ai didi

java - “调用需要 API 级别 23”错误,但 API 1 的 FrameLayout 上存在 getForeground()

转载 作者:IT老高 更新时间:2023-10-28 21:16:05 42 4
gpt4 key购买 nike

总结

最后,我发现了相关问题,setForeground() 被错误地标记为在扩展 FrameLayout 的 ViewGroups 上需要 API 23。

Issue 189041: setForeground() incorrectly flagged as requiring API 23 (NewApi) for ViewGroups extending FrameLayout

如果你没有扩展FrameLayout,说明文档有误,需要API 23。

Issue 186273: View.setForeground wrong API level

更新问题

标记为 duplicated of Can't use setForeground method on ImageView由 Commonsware 并由他回答:

That is a documentation bug. setForeground() existed on FrameLayout from API Level 1; it is only on View as of API Level 23.

在我的情况下,fork 中的检查没有检测到文档错误,而是在集成项目中检测到,我不明白,无论如何,这回答了我最初的问题。

但情况不一样,这段代码已经扩展了一个Framelayout并且使用这个方法,它不是一个ImageView,所以我想这个方法已经被删除了API 23。它现在没有出现在引用中。

更新:我添加了 diff report对于框架布局:

enter image description here

新问题

所以我的问题变成了如何使用以前版本中的方法,以及,为什么会选择性地出现检查错误?

如果我添加了多余的类型转换,错误消息就会消失:

((FrameLayout) layout).getForeground()

但它正在访问现在不支持的 View 方法。

因此,我认为以以前的 API 为目标会删除错误消息,但我希望能找到使用此 Framelayout 方法的解决方案或解决我的问题的线索:

ANDROID_COMPILE_SDK_VERSION=23
ANDROID_BUILD_TOOLS_VERSION=23.0.1
ANDROID_DEFAULT_MIN_SDK_VERSION=19
ANDROID_DEFAULT_TARGET_SDK_VERSION=23

解决方法

简而言之,作为一种解决方法,我直接将类型更改为 FrameLayout,所以关于 API 和强制转换的警告消失了,我测试它在 Android 4.4.4 设备上运行并调试,我想它会崩溃,反正它只用在一个动画中,我会在未来修复/替换它。

初始问题

我 fork 并定制了 Google 示例 android-topeka , 并且 android-studio 显示了一个错误,我不了解在 android 中使用类 View 的方法 getForeground() 所需的 API 级别。查看包:

Call requires API level 23 (current min is 19): android.view.View#getForeground

reference将该方法标记为在 API 级别 1 中添加,文档 (Control+Q) 显示相同:

Doc showing API level 1 method

但是Calling new methods on old versions Inspection 显示需要 API 级别 23 的错误:

Error message about API 23 required

我找到了 similar question ,在这种情况下是一个错误,但我认为这不是错误,因为原始 fork 没有显示此错误消息。

我会尝试检测第一次出现的消息,但我做了很多更改,所以任何线索都将不胜感激,谢谢。

最佳答案

最后我找到了相关的问题,setForeground() 被错误地标记为需要 API 23 用于扩展 FrameLayout 的 ViewGroups。

Issue 189041: setForeground() incorrectly flagged as requiring API 23 (NewApi) for ViewGroups extending FrameLayout

如果不扩展FrameLayout,说明文档有误,确实需要API 23。

Issue 186273: View.setForeground wrong API level

关于java - “调用需要 API 级别 23”错误,但 API 1 的 FrameLayout 上存在 getForeground(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33379534/

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