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

总结

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

问题 189041:setForeground() 被错误地标记为需要 API 23 (NewApi) 才能用于扩展 FrameLayout 的视图组

如果不扩展 ,则文档错误,需要 API 23。FrameLayout

问题 186273:View.set 前台 API 级别错误

更新的问题

在Commonsware的ImageView上标记为不能使用setForeground方法的副本,并由他回答:

这是一个文档错误。setForeground() 从 API 级别 1 开始就存在于 FrameLayout 上;它仅在 API 级别 23 的视图上。

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

但这不是同样的情况,这个代码已经在扩展一个并使用此方法,它不是一个,所以我想该方法已经在API 23中被删除了。它现在不会出现在引用中。FramelayoutImageView

更新:我为FrameLayout添加了一个差异报告

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

解决方法

简而言之,作为一种解决方法,我将类型更改为直接,因此有关API和投射的警告消失了,并且我测试了它在Android 4.4.4设备和调试上的工作原理,我认为它会崩溃,无论如何它只用于一个动画,我将来会修复/替换它。FrameLayout

初始问题

我分叉并自定义了Google示例android-topeka,android-studio显示了一个错误,我不了解在包中使用类的方法所需的API级别:getForeground()Viewandroid.view

调用需要 API 级别 23(当前最小值为 19):android.view.View#getForeground

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

Doc showing API level 1 method

但 显示了一个错误,即 API 级别 23 是必需的:Calling new methods on older versions inspection

Error message about API 23 required

我发现了一个类似的问题,在这种情况下是一个错误,但我认为这不是一个错误,因为原始分叉没有显示此错误消息。

我会尝试在第一次出现消息时检测到,但是我做了很多更改,因此任何线索都将不胜感激,谢谢。


答案 1

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

问题 189041:setForeground() 被错误地标记为需要 API 23 (NewApi) 才能用于扩展 FrameLayout 的视图组

如果您不扩展,则文档是错误的,并且确实需要API 23。FrameLayout

问题 186273:View.set 前台 API 级别错误


答案 2

推荐