我正在对 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。
Best Answer-推荐答案 strong>
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/
|