28

概括

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

问题 189041:setForeground() 错误地标记为需要 API 23 (NewApi) 才能扩展 FrameLayout 的 ViewGroups

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

问题 186273:View.setForeground 错误的 API 级别

更新的问题

Commonsware 将其标记为Can't use setForegroundmethod on ImageView的重复项并由他回答:

那是一个文档错误。setForeground() 从 API 级别 1 开始存在于 FrameLayout;它仅在 API 级别 23 上查看。

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

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

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

在此处输入图像描述

新问题

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

如果我添加多余的演员表,错误消息就会消失:

((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 设备上的工作和调试,我认为它会崩溃,反正它只用于一个动画,我将在未来修复/替换它。

最初的问题

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

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

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

显示 API 级别 1 方法的文档

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

需要有关 API 23 的错误消息

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

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

4

1 回答 1

20

最后我发现了相关问题,setForeground()错误地标记为需要 API 23 for ViewGroups extended FrameLayout

问题 189041:setForeground() 错误地标记为需要 API 23 (NewApi) 才能扩展 FrameLayout 的 ViewGroups

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

问题 186273:View.setForeground 错误的 API 级别

于 2015-10-28T08:42:54.010 回答