【问题标题】:i use Display.getsize(point) method and there occur an error: no suchmethoderror我使用 Display.getsize(point) 方法并出现错误:没有这样的方法错误
【发布时间】:2014-04-03 17:23:02
【问题描述】:

我写了一个fragment的demo,在android 3.0下,getWidth()getHeigh()这个方法已经被弃用了。我读了api,发现getSize(point)和这两种方法是一样的,所以我试试。

  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)

【问题讨论】:

标签: android nosuchmethoderror


【解决方案1】:

Display.getRealSize() 方法已添加到 API 17,即 Android 4.2。如果您尝试在低于此的设备上使用它,您将收到 NoSuchMethodException,因为该方法不存在。

Display.getSize() 已添加到 API 13,即 Android 3.2。您想在 Android 3.0(即 API 11)上使用该应用。

因此,对于较旧的设备,甚至是当前设备(我还没有听说过实际从 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()
}

【讨论】:

  • @echo 如果回答了您的问题,请单击左侧的勾号将此答案标记为已接受。
【解决方案2】:

将此代码用于旧版本和新版本。

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;

}

【讨论】:

    猜你喜欢
    • 2018-12-14
    • 2013-02-01
    • 2017-10-02
    • 2017-03-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多