Gradle imprime la advertencia aunque se selecciona SuppressWarnings
Tengo una aplicación Android importada a Android Studio. Tiene algunas bibliotecas Java incluidas. Todo funciona hasta ahora.
El siguiente método:
- ¿Qué es @SuppressWarnings ("depreciación") y ("no utilizado") en Android?
- Crear una anotación Java con comportamiento contextual IDE
- Suprimir AndroidManifest.xml Advertencia relacionada con minSdkVersion
- Cómo suprimir la advertencia "Se puede reemplazar con foreach"
- android @Suppress errores vs @ TargetApi
@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); }
Imprime siempre una advertencia de depreciación:
: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 advertencia
Este no es el único @SuppressWarnings ("deprecation") en mi proyecto. En otros lugares la advertencia no se imprime …
Por ejemplo:
@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); } }
Desde mi AndroidManifest:
<uses-sdk android:minSdkVersion="15" android:targetSdkVersion="21" />
¿Cómo puedo deshacerme de este mensaje de advertencia? No quiero dar vuelta de las advertencias global o algo.
EDIT: Si acabo de llamar a getDrawable con el parámetro Theme, porque esto sucede en el dispositivo SDK15:
java.lang.NoSuchMethodError: android.content.res.Resources.getDrawable at de.ansat.terminal.activity.widgets.druckAssistent.FahrkartenArtSelector$3.getDrawable(FahrkartenArtSelector.java:128)
- Cómo configurar ProGuard para omitir métodos con SupressWarning ("unused")
- Cómo suprimir Android Lint advertencia en Gradle script
- Suprimir advertencia de pelusa en el nivel de vista
- ¿Hay alguna manera de declarar suprimir las advertencias a la declaración del método?
- Android Studio - elimina la advertencia de excepción de seguridad
- Nivel de la API de Android <19 y "prueba puede utilizar la administración de recursos automática" warning
- Android Studio: suprimir advertencia de pelusa para la instrucción if
He descubierto que por razones desconocidas este código activa la advertencia:
private Drawable getShadow(Context context) { @SuppressWarnings("deprecation") final Drawable drawable = context.getResources().getDrawable(R.drawable.shadow_top); return drawable; }
Aunque este código equivalente no:
private Drawable getShadow(Context context) { final int resId = R.drawable.shadow_top; @SuppressWarnings("deprecation") final Drawable drawable = context.getResources().getDrawable(resId); return drawable; }
Extraer un método auxiliar también parece funcionar y solucionado el problema para mí:
@SuppressWarnings("deprecation") private Drawable getDrawable(Context context, int resId) { return context.getResources().getDrawable(resId); }
Hazlo con @SuppressWarnings ("all") para probar
@SuppressWarnings
anotación de @SuppressWarnings
es para las advertencias del compilador de Java. Para las advertencias de pelusa, use
@SuppressLint("NewApi")
o
@TargetApi(android.os.Build.VERSION_CODES.JELLY_BEAN)