2015-04-15 8 views
5

Ho un'app Android importata su Android Studio. Ha alcune librerie Java incluse. Tutto funziona così lontano.avviso di stampa gradle sebbene SuppressWarnings sia impostato

Il seguente metodo:

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

stampe sempre un avvertimento di ammortamento:

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

Questo non è l'unico @SuppressWarnings ("deprecazione") nel mio progetto. In altri luoghi il messaggio di avviso non viene stampato ...

Ad esempio:

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

Dal mio AndroidManifest:

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

Come posso liberarmi di questo messaggio di avviso? Non voglio disattivare gli avvertimenti a livello globale o qualcosa del genere.

EDIT: Se mi basta chiamare getDrawable con il parametro tema, di causa questo accade su dispositivo SDK15:

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

risposta

1

ho trovato che, per ragioni sconosciute questo codice innesca l'avvertimento:

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

Anche se questo codice equivalente non lo fa:

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

Estrazione un metodo di supporto sembra anche a lavorare e risolto il problema per me:

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

L'aiutante-Metodo ha fatto il trucco, grazie! –

0

fanno con @SuppressWarnings ("tutti") per testare

0

@SuppressWarnings annotazione è per Java avvisi del compilatore. Per avvertenze lanugine, utilizzare uno

@SuppressLint("NewApi") 

o

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