2015-04-15 22 views
5

Tôi có một ứng dụng Android được nhập vào Android Studio. Nó có một số thư viện Java. Tất cả mọi thứ hoạt động cho đến nay.in gradle cảnh báo mặc dù SuppressWarnings được đặt

Các phương pháp sau đây:

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

in luôn luôn là một cảnh báo khấu hao:

: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 cảnh báo

Đây không phải là @SuppressWarnings chỉ ("deprecation") trong dự án của tôi. Ở những nơi khác cảnh báo không in ...

Ví dụ:

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

Từ AndroidManifest tôi:

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

Làm thế nào tôi có thể thoát khỏi thông điệp cảnh báo này? Tôi không muốn tắt cảnh báo trên toàn cầu hoặc một cái gì đó.

EDIT: Nếu tôi chỉ cần gọi getDrawable với tham số Theme, nguyên nhân này xảy ra trên thiết bị SDK15:

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

Trả lời

1

Tôi đã tìm thấy vì lý do không rõ mã này kích hoạt cảnh báo:

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

Trong khi mã tương đương này không:

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

Trích xuất một phương pháp helper cũng dường như để làm việc và giải quyết vấn đề đối với tôi:

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

Các helper-Phương pháp đã làm các trick, cảm ơn! –

0

làm điều đó với @SuppressWarnings ("tất cả") để kiểm tra

0

@SuppressWarnings chú thích là để cảnh báo trình biên dịch Java. Đối với cảnh báo lint, sử dụng một trong hai

@SuppressLint("NewApi") 

hoặc

@TargetApi(android.os.Build.VERSION_CODES.JELLY_BEAN) 
Các vấn đề liên quan