2015-04-15 21 views
5

Mam aplikację na Androida zaimportowaną do Android Studio. Zawiera kilka bibliotek Java. Wszystko działa tak daleko.gradle drukuje ostrzeżenie, chociaż ustawienie SuppressWarnings ma wartość

następującą metodę:

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

drukuje zawsze ostrzeżenie amortyzacja:

: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 ostrzeżenie

To nie jest jedyne @SuppressWarnings ("amortyzacyjne") w moim projekcie. W innych miejscach, ostrzeżenie nie jest drukowane ...

Na przykład:

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

Z mojego AndroidManifest:

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

Jak mogę pozbyć się tego komunikatu ostrzegawczego? Nie chcę zmieniać ostrzeżeń na całym świecie, czy coś.

EDIT: Gdybym tylko zadzwonić getDrawable parametrem motywu, przyczyny takiej sytuacji na urządzeniu SDK15:

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

Odpowiedz

1

znalazłem że z nieznanych powodów ten kod wyzwala ostrzeżenie:

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

Mimo to odpowiednik kod nie:

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

Wyodrębnianie metody pomocnika wydaje się również do pracy i rozwiązać problem dla mnie:

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

Pomocnik-Metoda wystarczyły, dzięki! –

0

zrobić z @SuppressWarnings ("All"), aby przetestować

0

@SuppressWarnings adnotacja jest ostrzeżeń kompilatora Javy. Ostrzeżeń strzępkami użyć

@SuppressLint("NewApi") 

lub

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