我正在编码到 api 级别 11。所以要获得显示的宽度,我有以下函数
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
Point size = new Point();
display.getSize(size);
width = size.x;
}
else {
width = display.getWidth();
}
我这样做是为了避免收到弃用警告。但我仍然收到关于 getWidth
的警告。为什么警告没有消失?
对于 getSize
我也收到一个错误,说调用需要 api 级别 13 但检测到 11。
最佳答案
IDE 不够智能,无法意识到您在这里尝试做什么,因此您仍然会收到警告。
如果您执意要摆脱它们,您可以定义两种方法:一种执行 Honeycomb 路由中的代码,并具有注释 @TargetApi(13)
,第二种执行另一条 route 的代码带有注释 @SuppressWarnings("deprecation")
。就个人而言,我不会担心。
例子:
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2) {
width = getWidthHoneycombMR2();
}
else {
width = getWidthLegacy(display);
}
...
@TargetApi(13)
public int getWidthHoneycombMR2() {
Point size = new Point();
display.getSize(size);
return size.x;
}
@SuppressWarnings("deprecation")
public int getWidthLegacy(Display display) {
return display.getWidth();
}
关于即使我指定了 api 级别,Android 也会显示弃用警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20935922/