这是我处理弃用方法的方法:
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()可访问)?
答案 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警告和错误的目的。