尽管设置了SuppressWarnings,但gradle会显示警告

时间:2015-04-15 13:47:46

标签: java android android-gradle deprecated suppress-warnings

我有一个Android应用导入Android Studio。它包含一些Java库。一切都运作到目前为止。

以下方法:

            @SuppressWarnings("deprecation")
        private Drawable getDrawable() {
            if(Build.VERSION.SDK_INT > Build.VERSION_CODES.KITKAT_WATCH)
                return activity.getResources().getDrawable(R.drawable.separator_gradient, activity.getTheme());
            else
                return activity.getResources().getDrawable(R.drawable.separator_gradient);
        }

始终打印折旧警告:

:androidAnsatTerminal:compileDebugJava
C:\...\src\main\java\de\ansat\terminal\activity\widgets\druckAssistent\FahrkartenArtSelector.java:131: warning: [deprecation] getDrawable(int) in Resources has been deprecated
                return activity.getResources().getDrawable(R.drawable.separator_gradient);
                                               ^

1警告

这不是我项目中唯一的@SuppressWarnings("弃用")。在其他地方,不打印警告......

例如:

    @SuppressWarnings("deprecation")
private void setBackgroundToNull(ImageView imgRight) {

    if (android.os.Build.VERSION.SDK_INT < android.os.Build.VERSION_CODES.JELLY_BEAN) {
        imgRight.setBackgroundDrawable(null);
    } else {
        imgRight.setBackground(null);
    }
}

来自我的AndroidManifest:

<uses-sdk
    android:minSdkVersion="15"
    android:targetSdkVersion="21" />

如何摆脱此警告讯息? 我不想在全球或其他地方发出警告。

编辑: 如果我只使用Theme参数调用getDrawable,原因是这发生在SDK15设备上:

java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable
        at de.ansat.terminal.activity.widgets.druckAssistent.FahrkartenArtSelector$3.getDrawable(FahrkartenArtSelector.java:128)

3 个答案:

答案 0 :(得分:1)

我发现由于未知原因,此代码会触发警告:

private Drawable getShadow(Context context) {
    @SuppressWarnings("deprecation")
    final Drawable drawable = context.getResources().getDrawable(R.drawable.shadow_top);
    return drawable;
}

虽然这个等效代码没有:

private Drawable getShadow(Context context) {
    final int resId = R.drawable.shadow_top;
    @SuppressWarnings("deprecation")
    final Drawable drawable = context.getResources().getDrawable(resId);
    return drawable;
}

提取辅助方法似乎也起作用并为我解决了这个问题:

@SuppressWarnings("deprecation")
private Drawable getDrawable(Context context, int resId) {
    return context.getResources().getDrawable(resId);
}

答案 1 :(得分:0)

使用@SuppressWarnings(“all”)来测试

答案 2 :(得分:0)

@SuppressWarnings注释用于Java编译器警告。对于lint警告,请使用

@SuppressLint("NewApi")

@TargetApi(android.os.Build.VERSION_CODES.JELLY_BEAN)