“调用需要 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中被删除了。它现在不会出现在引用中。Framelayout
ImageView
更新:我为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
解决方法
简而言之,作为一种解决方法,我将类型更改为直接,因此有关API和投射的警告消失了,并且我测试了它在Android 4.4.4设备和调试上的工作原理,我认为它会崩溃,无论如何它只用于一个动画,我将来会修复/替换它。FrameLayout
初始问题
我分叉并自定义了Google示例android-topeka,android-studio显示了一个错误,我不了解在包中使用类的方法所需的API级别:getForeground()
View
android.view
调用需要 API 级别 23(当前最小值为 19):android.view.View#getForeground
该参考将方法标记为在 API 级别 1 中添加,文档 () 显示相同内容:Control+Q
但 显示了一个错误,即 API 级别 23 是必需的:Calling new methods on older versions inspection
我发现了一个类似的问题,在这种情况下是一个错误,但我认为这不是一个错误,因为原始分叉没有显示此错误消息。
我会尝试在第一次出现消息时检测到,但是我做了很多更改,因此任何线索都将不胜感激,谢谢。