1

我正在为 Android 编写一个应用程序。我想在运行时动态收集屏幕宽度以根据显示大小绘制对话框。为此,我编写了以下函数:

public static int getDisplayWidth( Context context )
{
    WindowManager wm = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); 
    Display display = wm.getDefaultDisplay();
    int width = 0;
    if( android.os.Build.VERSION.SDK_INT >= 13 )
    {
        Point size = new Point();
        display.getSize(size); //Error
        width = size.x;
    }
    else
    {
        width = display.getWidth();
    }
    return width;
}

但我在“display.getSize(size);”行出现错误

错误:“方法 getSize(Point) 未为 Display 类型定义”

我使用 Eclipe 作为开发环境。

项目构建目标是“Android 2.3.3”。在 Manifest.xml 我设置: <uses-sdk android:minSdkVersion="8" android:targetSdkVersion="16" />

谁能告诉我为什么会出现这个错误?我做错了什么?

萨普

4

1 回答 1

0

较早的 Android 版本没有 getSize() 方法。错误是调用或链接到不存在的函数。

private static Point getDisplaySize(final Display display) {
    final Point point = new Point();
    try {
        display.getSize(point);
    } catch (java.lang.NoSuchMethodError ignore) { // Older device
        point.x = display.getWidth();
        point.y = display.getHeight();
    }
    return point;
}

尝试 try-catch 看看这是否有帮助。这应该安全地回退到旧 API 并确保您的代码在广泛的设备上工作。

真的,谷歌有点小题大做。

看:

于 2013-08-03T09:09:35.083 回答