2012-09-23 38 views
5

Làm cách nào bạn có thể tạo phương thức với một số phiên bản cho mỗi cấp API khác nhau. Tôi nghĩ rằng đó là một cái gì đó như thế này, nhưng tôi không chắc chắnCác phương pháp Java khác nhau cho các cấp API khác nhau

@apilevel("11") 
private void getR() 
{ 
... 
} 

@apilevel("4") 
private void getR() 
{ 
... 
} 

Cách chính xác để làm điều này là gì? Cảm ơn trước

Trả lời

4

Bạn có thể sử dụng:

Integer.valueOf(android.os.Build.VERSION.SDK); 

Để tham khảo bạn có thể muốn kiểm tra ở đây: http://developer.android.com/reference/android/os/Build.VERSION.html#SDK

Và đối với các cấp chính mình ở đây là danh sách: http://developer.android.com/guide/topics/manifest/uses-sdk-element.html

+1

Đó là bây giờ bị phản, tôi đã sử dụng .Build.VERSION.SDK_INT thay vào đó, nhưng cảm ơn bạn rất nhiều –

7

đây bạn sẽ tìm thấy văn bản rất hay về chủ đề này:

http://android-developers.blogspot.com/2010/07/how-to-have-your-cupcake-and-eat-it-too.html

bạn về cơ bản nên sử dụng mã như dưới đây:

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.ICE_CREAM_SANDWICH) { 
    Log.i(LOG_TAG, "At least ICS version"); 
} 
else if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB) { 
    Log.i(LOG_TAG, "At least HoneyComb version"); 
} 
else { 
    Log.i(LOG_TAG, "legacy"); 
} 

giá trị const như ICE_CREAM_SANDWICH được tĩnh đưa vào lớp học java, vì vậy miễn là họ có sẵn trong biên soạn, họ sẽ có những phiên bản về trước android sdk-s trên điện thoại của người dùng. Những gì bạn không muốn làm là gọi các phương thức không có sẵn trên các sdk-s trước đó, điều này sẽ kết thúc với các ngoại lệ VFY.

nhưng điều này có thể tẻ nhạt để viết mã như thế, đó là lý do tại sao hết sức mình để tạo ra thực hiện riêng cho từng phiên bản Android và truy cập nó nghĩ giao diện cơ sở: android.os

interface ImplBase { 
void myFunc(); 
}; 

class ICSImp implements ImplBase { 
public void myFunc(){} 
} 

class HoneyCombImp implements ImplBase { 
public void myFunc(){} 
} 

class LegaceImp implements ImplBase { 
public void myFunc(){} 
} 
Các vấn đề liên quan