'Call requires API level 23' 错误,但 getForeground() 存在于 API 1 的 FrameLayout 上

'Call requires API level 23' error, but getForeground() exists on FrameLayout from API 1

总结

最后,我发现了相关问题,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

更新问题

被Commonsware标记为并由他回答:

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

在我的例子中,文档错误不是通过复刻中的检查检测到的,而是在集成项目中检测到的,我不明白,无论如何,这回答了我最初的问题。

但情况不同,此代码已经扩展了 Framelayout 并使用此方法,它不是 ImageView,所以我想该方法已在 [=106= 中删除] 23.现在没有出现在参考文献中

更新: 我为 FrameLayout 添加了一个 diff report

新问题

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

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

((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 设备和调试,我以为会崩溃,反正只在一个动画中用到,以后fix/replace

初始问题

我分叉并自定义了 Google 示例 android-topeka,android-studio 显示了一个错误,我不明白需要使用的 API 级别android.view包中classView的方法getForeground()

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

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

但是 Calling new methods on older versions inspection 显示错误,需要 API 级别 23:

我发现了一个 similar question,在那种情况下是一个错误,但我认为这不是一个错误,因为原始分支没有显示此错误消息。

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

最后我发现了相关问题,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