2015-04-15 2 views
5

J'ai une application Android importée dans Android Studio. Il a quelques bibliothèques Java incluses. Tout fonctionne jusqu'à présent.gradle affiche l'avertissement bien que SuppressWarnings soit réglé

La méthode suivante:

  @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 toujours un avertissement d'amortissement:

: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 avertissement

Ce ne sont pas les seuls @SuppressWarnings ("désapprobation") dans mon projet. Dans d'autres endroits, l'avertissement est pas imprimé ...

Par exemple:

@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); 
    } 
} 

De mon AndroidManifest:

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

Comment puis-je me débarrasser de ce message d'avertissement? Je ne veux pas d'avertissements globaux ou quelque chose.

EDIT: Si je viens d'appeler getDrawable avec le paramètre thème, de la cause cela se produit sur le périphérique SDK15:

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

Répondre

1

J'ai trouvé que ce code déclenche pour des raisons inconnues de l'avertissement:

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

Bien que ce code équivalent ne:

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

une méthode d'extraction aide semble aussi travailler et résolu le problème pour moi:

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

L'aide-méthode a fait l'affaire, merci! –

0

font avec @SuppressWarnings ("tous") pour tester

0

annotation @SuppressWarnings est pour les avertissements du compilateur Java. Pour les avertissements de peluches, utilisez

@SuppressLint("NewApi") 

ou

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