0

私はfragmentのデモを書いています.Android 3.0ではメソッドgetWidth()getHeigh()は非推奨です。私はAPIを読んgetSize(point)で、2つの方法と同じであることがわかったので、試してみました。

  Display d = wm.getDefaultDisplay();
  int width=0;
  int height=0;
  Point point = new Point(width,height);
  d.getRealSize(point);

しかし、アプリを実行するとエラーが発生します。そのような問題を見つけた人はいますか?:

02-01 03:13:06.548: E/AndroidRuntime(558): FATAL EXCEPTION: main
02-01 03:13:06.548: E/AndroidRuntime(558): java.lang.NoSuchMethodError: android.view.Display.getRealSize
02-01 03:13:06.548: E/AndroidRuntime(558):  at com.demo.fragment.FragmentDemoActivity.onCreate(FragmentDemoActivity.java:33)
02-01 03:13:06.548: E/AndroidRuntime(558):  at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1048)
02-01 03:13:06.548: E/AndroidRuntime(558):  at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1700)
4

2 に答える 2

3

Display.getRealSize()メソッドは、Android 4.2 である API 17 で追加されました。それ以下のデバイスで使用しようとすると、メソッドが存在しないため NoSuchMethodException が発生します。

Display.getSize()は、Android 3.2 である API 13 で追加されました。API 11 である Android 3.0 でアプリを使用したい。

そのため、古いデバイスや現在のデバイスでも (非推奨のメソッドが実際に Android から削除されたと聞いたことはありません)、getWidth()getHeight( ) を使用する必要があります。

または、次のような if else ステートメントでコードを実行することもできます。

int currentapiVersion = android.os.Build.VERSION.SDK_INT;
if (currentapiVersion >= android.os.Build.VERSION_CODES.JELLY_BEAN_MR1){
    //Do something for API 17 only (4.2)
    //getRealSize()
}
else if (currentapiVersion >= android.os.Build.VERSION_CODES.HONEYCOMB_MR2){
    // Do something for API 13 and above , but below API 17 (API 17 will trigger the above block
    //getSize()
} else{
    // do something for phones running an SDK before Android 3.2 (API 13)
    //getWidth(), getHeight()
}
于 2013-02-01T03:19:30.813 に答える
0

古いバージョンと新しいバージョンの両方でこのコードを使用してください。

private static Point getDisplaySize(final Display display) {

final Point size= new Point();
try {
    display.getSize(size); /// will support new versions
} catch (java.lang.NoSuchMethodError ignore) { // Older versions
    size.x = display.getWidth();
    size.y = display.getHeight();
}
return size;

}

于 2014-04-03T09:23:02.590 に答える