Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/390.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java ';调用需要API级别23';错误,但API 1的FrameLayout上存在getForeground()_Java_Android_Android Studio_Android Framelayout_Android Api Levels - Fatal编程技术网

Java ';调用需要API级别23';错误,但API 1的FrameLayout上存在getForeground()

Java ';调用需要API级别23';错误,但API 1的FrameLayout上存在getForeground(),java,android,android-studio,android-framelayout,android-api-levels,Java,Android,Android Studio,Android Framelayout,Android Api Levels,摘要 最后,我发现了相关的问题,setForeground()错误地标记为在扩展FrameLayout的视图组上需要API 23 如果您没有扩展FrameLayout,则说明文件错误,需要API 23 更新的问题 用公用软件标记并由他回答: 这是一个文档错误。FrameLayout上存在setForeground() 从API级别1开始;仅在API级别23时才可查看 在我的例子中,fork中的检查没有检测到文档错误,但是在集成项目中检测到了,我不理解它,无论如何,这回答了我最初的问题 但情况

摘要

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

如果您没有扩展
FrameLayout
,则说明文件错误,需要API 23

更新的问题

用公用软件标记并由他回答:

这是一个文档错误。FrameLayout上存在setForeground() 从API级别1开始;仅在API级别23时才可查看

在我的例子中,fork中的检查没有检测到文档错误,但是在集成项目中检测到了,我不理解它,无论如何,这回答了我最初的问题

但情况不同,此代码已经扩展了
Framelayout
,并且使用此方法,它不是
ImageView
,因此我认为此方法已在API 23中删除。它现在没有出现在引用中

更新:我为FrameLayout添加了一个:

新问题

因此,我的问题变为如何在以前的版本中使用该方法,以及为什么选择性地出现检查错误

如果添加冗余强制转换,错误消息将消失:

((FrameLayout) layout).getForeground()
但是它正在访问现在不支持的
视图
方法

因此,我认为针对以前的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 studio显示了一个错误,我不了解在
android中使用类
View
的方法
get前台()
所需的API级别。View
包:

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

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

但是
在旧版本上调用新方法显示了一个错误,需要API级别23:

在这种情况下,我发现了一个bug,但我认为这不是bug,因为原来的fork没有显示这个错误消息


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

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

如果您没有扩展
FrameLayout
,说明文件是错误的,确实需要API 23


那么,您是否知道如何为API 23以下的设备获取或设置前景?如果您要扩展FrameLayout,可以使用冗余强制转换或将类型更改为FrameLayout,以避免文档错误。否则,这是不可能的,但也许下一个解决方法对您有用谢谢您的帮助