'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
如果您没有扩展 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
如果您没有扩展 FrameLayout
,文档是错误的,API 23 确实是必需的。
总结
最后,我发现了相关问题,setForeground()
在扩展 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
.
如果您没有扩展 FrameLayout
,文档是错误的,API 23 确实是必需的。