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 に安全にフォールバックし、コードが幅広いデバイスで動作するようになります。

本当に、Googleの側では少しボールアップしています。

見る:

于 2013-08-03T09:09:35.083 に答える