Android处理已弃用的方法

时间:2014-09-24 22:31:39

标签: android

这是我处理弃用方法的方法:

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

问题是{JERY_BEAN_MR1及以上版本已移除getResolvedLayoutDirection()。因此,由于我的项目针对API 20,因此无法找到该方法,并且出现错误。

如果我保持愚蠢:

int layoutDirection = getLayoutDirection();

项目编译并运行但仍然出现错误,无法添加TargetApi或SuppressLint注释。 getLayoutDirection()文档有:

  

为了兼容性,这将返回{@link #LAYOUT_DIRECTION_LTR} if   API版本低于{@link   android.os.Build.VERSION_CODES#JELLY_BEAN_MR1}。

所以抑制棉绒应该没问题。


我是否应该抑制lint错误或以其他方式修复它(可能使getResolvedLayoutDirection()可访问)?

1 个答案:

答案 0 :(得分:1)

有条件地检查方法是否可用的方法是通过Build.VERSION.SDK_INT检查设备运行的Android版本:

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)添加到包含上述块的方法中,以向构建工具指示,对于该单个方法,将minSdkVersion视为17而不是通常的任何内容,生成Lint警告和错误的目的。