2012-11-05 20 views
23

Tôi muốn sử dụng view.setBackgroundDrawable(Drawable) nhưng phương pháp này là deprecated. Nó được thay thế bằng .setBackground(Drawable). Nhưng tối thiểu API 8 của tôi không thể xử lý điều đó. Nó bảo tôi đặt mức tối thiểu thành API 16.Phương pháp không được chấp nhận, nhưng phương pháp thay thế yêu cầu cao hơn api

Có cách nào để sử dụng một phương pháp khác, dựa trên API của thiết bị không?

Something như

if(API<16) 
{ 
    view.setBackgroundDrawable(Drawable) 
} 
else 
{ 
    view.setBackground(Drawable) 
} 

Hoặc để tôi thực sự cần phải thay đổi API tối thiểu để làm điều này?

Trả lời

39

setBackgroundDrawable không được dùng nữa nhưng vẫn hoạt động để bạn có thể sử dụng. Nhưng nếu bạn muốn hoàn toàn chính xác, bạn nên sử dụng một cái gì đó như thế này

int sdk = android.os.Build.VERSION.SDK_INT; 
if(sdk < android.os.Build.VERSION_CODES.JELLY_BEAN) { 
    setBackgroundDrawable() 
} else { 
    setBackground(); 
} 

Để làm việc này, bạn cần phải đặt buildTarget api 16 và min build to 7 hoặc một cái gì đó tương tự.

+3

Trong mã này ... cảnh báo vẫn sẽ được hiển thị, bạn có thể sử dụng ngăn chặn cảnh báo để loại bỏ nó! – Antrromet

+3

Thật sự tôi cần cả hai: @SuppressLint ("NewApi") \t \t @SuppressWarnings ("deprecation") – Niels

+0

Yea, tôi quên đề cập đến những lời cảnh báo Lint – Antrromet

5

Bạn có thể sử dụng các phương pháp khác nhau dựa trên các phiên bản API.

Đối với ví dụ:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.FROYO) { 
     //Methods for version <8 (FROYO) 
} else { 
     // Methods for version >=8 
} 

đây thiết targetSDkversion bạn cho bất kỳ phiên bản cao hơn (cho ví dụ 16 ở đây) và thiết lập của bạn minsdkversion hạ phiên bản (API 7).

7

Something như thế này:

if (Build.VERSION.SDK_INT < Build.VERSION_CODES.JELLY_BEAN){ 
    view.setBackgroundDrawable(Drawable) 
} else { 
    view.setBackground(Drawable) 
} 
Các vấn đề liên quan