2014-09-24 63 views
0

這是我的處理方法已過時:Android處理方法已過時

int layoutDirection ; 
if (getContext().getApplicationInfo().targetSdkVersion > Build.VERSION_CODES.JELLY_BEAN_MR1) { 
    layoutDirection = getLayoutDirection(); 
}else { 
    layoutDirection = getResolvedLayoutDirection(); 
} 

的問題是,getResolvedLayoutDirection()已經在JELLY_BEAN_MR1及以上的去除。所以,因爲我的項目的目標是API 20,所以找不到方法,並且出現錯誤。

如果我把它愚蠢:

int layoutDirection = getLayoutDirection(); 

項目編譯和運行,但我仍然得到一個錯誤添加無論是TargetApi或SuppressLint註解。 getLayoutDirection()文檔有:

出於兼容性考慮,如果 API版本比{@link android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}下這將返回{@link #LAYOUT_DIRECTION_LTR}。

所以抑制lint應該沒問題。


我應該抑制lint錯誤還是以某種方式修復它(可能使getResolvedLayoutDirection()可訪問)?

回答

0

有條件地檢查的方法是否可用的方法是檢查設備運行的Android版本,經由Build.VERSION.SDK_INT

if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.JELLY_BEAN_MR1) { 
    layoutDirection = getLayoutDirection(); 
} 
else { 
    layoutDirection = View.LAYOUT_DIRECTION_LTR; 
} 

並添加@TargetApi(Build.VERSION_CODES.JELLY_BEAN_MR1)含有上述塊,以指示該方法爲了生成Lint警告和錯誤,針對該單獨方法,構建工具要將您的minSdkVersion視爲17而不是通常情況。