getSize () дает мне ошибки

Когда я реализую

WindowManager wm = ((WindowManager)context.getSystemService(context.WINDOW_SERVICE)); Display display = wm.getDefaultDisplay(); m_nDisplayWidth = display.getWidth(); m_nDisplayHeight = display.getHeight(); 

Я могу работать нормально, но когда я реализую getSize, я получаю runtimeError

 Point size = new Point(); display.getSize(size); //Error right here m_nDisplayWidth = size.x; m_nDisplayHeight = size.y; 

Logcat:

 03-11 01:45:25.865: E/AndroidRuntime(18835): FATAL EXCEPTION: main 03-11 01:45:25.865: E/AndroidRuntime(18835): android.view.InflateException: Binary XML file line #7: Error inflating class com.brain.development.GameRun 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.LayoutInflater.createView(LayoutInflater.java:518) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.LayoutInflater.createViewFromTag(LayoutInflater.java:570) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.LayoutInflater.rInflate(LayoutInflater.java:623) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.LayoutInflater.inflate(LayoutInflater.java:408) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.LayoutInflater.inflate(LayoutInflater.java:320) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.LayoutInflater.inflate(LayoutInflater.java:276) 03-11 01:45:25.865: E/AndroidRuntime(18835): at com.android.internal.policy.impl.PhoneWindow.setContentView(PhoneWindow.java:215) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.app.Activity.setContentView(Activity.java:1679) 03-11 01:45:25.865: E/AndroidRuntime(18835): at com.brain.development.BrainDevelopmentActivity$1.onClick(BrainDevelopmentActivity.java:25) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.View.performClick(View.java:2582) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.View$PerformClick.run(View.java:9252) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.os.Handler.handleCallback(Handler.java:587) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.os.Handler.dispatchMessage(Handler.java:92) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.os.Looper.loop(Looper.java:130) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.app.ActivityThread.main(ActivityThread.java:3691) 03-11 01:45:25.865: E/AndroidRuntime(18835): at java.lang.reflect.Method.invokeNative(Native Method) 03-11 01:45:25.865: E/AndroidRuntime(18835): at java.lang.reflect.Method.invoke(Method.java:507) 03-11 01:45:25.865: E/AndroidRuntime(18835): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:907) 03-11 01:45:25.865: E/AndroidRuntime(18835): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:665) 03-11 01:45:25.865: E/AndroidRuntime(18835): at dalvik.system.NativeStart.main(Native Method) 03-11 01:45:25.865: E/AndroidRuntime(18835): Caused by: java.lang.reflect.InvocationTargetException 03-11 01:45:25.865: E/AndroidRuntime(18835): at java.lang.reflect.Constructor.constructNative(Native Method) 03-11 01:45:25.865: E/AndroidRuntime(18835): at java.lang.reflect.Constructor.newInstance(Constructor.java:415) 03-11 01:45:25.865: E/AndroidRuntime(18835): at android.view.LayoutInflater.createView(LayoutInflater.java:505) 03-11 01:45:25.865: E/AndroidRuntime(18835): ... 19 more 03-11 01:45:25.865: E/AndroidRuntime(18835): Caused by: java.lang.NoSuchMethodError: android.view.Display.getSize 03-11 01:45:25.865: E/AndroidRuntime(18835): at com.brain.development.GameRun$GameThread.(GameRun.java:46) 03-11 01:45:25.865: E/AndroidRuntime(18835): at com.brain.development.GameRun.(GameRun.java:97) 03-11 01:45:25.865: E/AndroidRuntime(18835): ... 22 more 

Это поддерживает как старые, так и более новые устройства:

 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; } 

Способ получения размера экрана для всех устройств:

 private static Point getDisplaySize(final Display display) { Point point = new Point(); if(Build.VERSION.SDK_INT >= Build.VERSION_CODES.HONEYCOMB_MR2){ //API LEVEL 13 display.getSize(point); }else{ point.x = display.getWidth(); point.y = display.getHeight(); } return point; } 

gettin Размер:

  WindowManager wm = ((WindowManager)context.getSystemService(context.WINDOW_SERVICE)); Display display = wm.getDefaultDisplay(); Point myPoint = getDisplaySize(display); Log.i("***Size X::", String.valueOf(myPoint.x)); Log.i("***Size Y::", String.valueOf(myPoint.y)); 

Эта версия работает и для API <4:

 @SuppressWarnings("deprecation") @TargetApi(VERSION_CODES.HONEYCOMB_MR2) public static Point getSize(Display display) { Point point = new Point(); if (sdkInt() >= VERSION_CODES.HONEYCOMB_MR2) { display.getSize(point); } else { point.set(display.getWidth(), display.getHeight()); } return point; } @SuppressWarnings("deprecation") public static int sdkInt() { return Integer.parseInt(VERSION.SDK); } 

Попытайтесь использовать это вместо этого:

 Display display = getWindowManager().getDefaultDisplay(); 

Без этого я не вижу никаких проблем в этом коде …

Извините, что я опаздываю на вечеринку, но убедитесь, что вы используете android sdk 13 или выше.

Попытайтесь, это работает для меня.

 getWindowManager().getDefaultDisplay().getWidth(); 

Вот способ утилиты, который вы могли бы использовать:

 public static int getWidth(Context context) { WindowManager windowManager = (WindowManager) context.getSystemService(Context.WINDOW_SERVICE); Display display = windowManager.getDefaultDisplay(); Point size = new Point(); int width; if (Build.VERSION.SDK_INT >= 13) { display.getSize(size); width = size.x; } else { width = display.getWidth(); } return width; } 
  • android: Как я могу реализовать первый учебник, например Go Launcher в моем приложении?
  • findViewById () возвращает null для настраиваемого компонента в макете XML, а не для других компонентов
  • Как удалить дополнительную прописку или маржу в кнопке дизайна материала?
  • Алгоритм реализации облака слов, такого как Wordle
  • Горизонтальная вкладка «и»
  • Вы должны использовать тему Theme.AppCompat (или потомок) с этим действием
  • Android Studio - TextView не отображается в макете дизайна
  • Редактор макета Android ConstraintLayout
  • Фоновый оттенок Lollipop не влияет на кнопку
  • Android: установить стиль просмотра программно
  • Добавить текст / метку на ссылки в графе D3 force
  • Давайте будем гением компьютера.