有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

java gradle虽然设置了SuppressWarnings,但仍打印警告

我有一个安卓应用程序导入到安卓 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);
        }

始终打印折旧警告:

:安卓AnsatTerminal: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 (安卓.os.Build.VERSION.SDK_INT < 安卓.os.Build.VERSION_CODES.JELLY_BEAN) {
        imgRight.setBackgroundDrawable(null);
    } else {
        imgRight.setBackground(null);
    }
}

从我的AndroidManifest:

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

我怎样才能摆脱这个警告信息? 我不想在全球范围内发出警告之类的

编辑: 如果我只调用带有主题参数的getDrawable,当然这会发生在SDK15设备上:

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

共 (3) 个答案

  1. # 1 楼答案

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

    @SuppressLint("NewApi")
    

    @TargetApi(android.os.Build.VERSION_CODES.JELLY_BEAN)
    
  2. # 2 楼答案

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

    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);
    }
    
  3. # 3 楼答案

    使用@SuppressWarnings(“全部”)进行测试