摘要
最后,我发现相关问题,setForeground()错误地标记为需要在ViewGroups扩展上使用API 23 FrameLayout.
问题189041:setForeground()被错误地标记为需要扩展FrameLayout的ViewGroups的API 23(NewApi)
如果您没有扩展FrameLayout,那么文档是错误的,并且需要API 23.
问题186273:View.setForeground错误的API级别
更新的问题
被Commonsware 标记为不能setForeground在ImageView上使用方法并由他回答:
这是一个文档错误.setForeground()存在于API Level 1的FrameLayout上; 它仅适用于API级别23的View.
在我的情况下,fork中的检查没有检测到文档错误,但在集成项目中检测到它,我不明白,无论如何,这回答了我的初始问题.
但这不是同一种情况,这个代码已经扩展了Framelayout并且使用了这个方法,它不是一个ImageView,所以我想这个方法已经在API 23中删除了.它现在没有出现在引用中.
更新:我为FrameLayout 添加差异报告:
新问题
所以我的问题改变了如何在以前的版本中使用该方法,为什么有选择地出现检查错误?
如果我添加冗余强制转换,则错误消息将消失:
((FrameLayout) layout).getForeground()
Run Code Online (Sandbox Code Playgroud)
但它正在访问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
Run Code Online (Sandbox Code Playgroud)
解决方法
简而言之,作为一种解决方法,我将类型FrameLayout直接更改为,因此关于API和转换的警告已经消失,我测试它适用于Android 4.4.4设备和调试,我认为它会崩溃,无论如何它只用于一个动画,我将来会修复/更换它.
最初的问题
我分叉和定制的谷歌样品Android的托皮卡,和Android工作室表明,我不理解使用方法所需的API级别的错误getForeground()之类的View在android.view包:
调用需要API级别23(当前最小值为19):android.view.View#getForeground
该引用标记了API级别1中添加的方法,而documentation(Control+Q)显示了相同的内容:
但是Calling new methods on older versions inspection显示需要API级别23的错误: …
java android android-studio android-api-levels android-framelayout
看看这个小的Android应用程序:
MainActivity.java:
package io.github.gsaga.toucheventtest;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
public class MainActivity extends AppCompatActivity {
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
}
}
Run Code Online (Sandbox Code Playgroud)
activity_main:
<ImageView android:layout_width="match_parent"
android:layout_height="match_parent"
android:foreground="@drawable/ic_launcher_background"
xmlns:android="http://schemas.android.com/apk/res/android" />
Run Code Online (Sandbox Code Playgroud)
指示的图像android:foreground不会显示,但如果我更改foreground为src或background中,则会显示activity_main.xml.此代码似乎遵循此处描述的说明:
https://developer.android.com/reference/android/view/View.html#attr_android:foreground
为什么android:foreground标签在上面的代码中不起作用?
注意:
minSdkVersion是的19,我正在运行这个应用程序Android 5.1(API level 22)