2014-09-24 78 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而不是通常情况。