概括
最后,我发现了相关问题,setForeground()
错误地标记为在 ViewGroups 扩展上需要 API 23 FrameLayout
。
问题 189041:setForeground() 错误地标记为需要 API 23 (NewApi) 才能扩展 FrameLayout 的 ViewGroups
如果您不扩展FrameLayout
,则说明文档有误,需要 API 23。
问题 186273:View.setForeground 错误的 API 级别
更新的问题
Commonsware 将其标记为Can't use setForeground
method 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
) 显示相同:
但Calling new methods on older versions inspection
显示需要 API 级别 23 的错误:
我发现了一个类似的问题,在这种情况下是一个错误,但我认为这不是错误,因为原始分叉没有显示此错误消息。
我会尝试检测第一次出现该消息的时间,但我做了很多更改,所以任何线索都将不胜感激,谢谢。