即使我指定了 api 级别,Android 也会显示弃用警告

标签 android deprecated

我正在编码到 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/

相关文章:

java - 当屏幕方向改变时,TabLayout 会卡在 viewpager 上

android - 在 onBackPressed() 的 MainActivity 中关闭应用

android数据绑定(bind)不起作用

php - 使用已弃用的 homebrew/php 在 OSX 上安装 PHP 5.6 的 PHP 扩展

Android - 加载额外的玩家分数

android - 需要删除最后一条折线并创建当前折线

java - 未弃用的 StringBufferInputStream 等价物

java - 划掉导入的java包

java - 为什么不推荐使用 isJavaLetterOrDigit?

Kotlin 弃用注解将其替换为类名