From 03d8cff45bad452e9081e030c5d35a985a3eb7d3 Mon Sep 17 00:00:00 2001 From: =?utf8?q?Reimar=20D=C3=B6ffinger?= Date: Tue, 13 Jun 2017 22:35:28 +0200 Subject: [PATCH] More robust code to get display density. Hopefully avoids the occasional null pointer exceptions triggered by the previous code. --- src/com/hughes/android/dictionary/DictionaryActivity.java | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/src/com/hughes/android/dictionary/DictionaryActivity.java b/src/com/hughes/android/dictionary/DictionaryActivity.java index 9523215..37c4755 100644 --- a/src/com/hughes/android/dictionary/DictionaryActivity.java +++ b/src/com/hughes/android/dictionary/DictionaryActivity.java @@ -42,6 +42,7 @@ import android.text.Spannable; import android.text.method.LinkMovementMethod; import android.text.style.ClickableSpan; import android.text.style.StyleSpan; +import android.util.DisplayMetrics; import android.util.Log; import android.util.TypedValue; import android.view.ContextMenu; @@ -1473,7 +1474,12 @@ public class DictionaryActivity extends ActionBarActivity { private void getMetrics() { // Get the screen's density scale - final float scale = getResources().getDisplayMetrics().density; + // The previous method getResources().getDisplayMetrics() + // used to occasionally trigger a null pointer exception, + // so try this instead. + DisplayMetrics dm = new DisplayMetrics(); + getWindowManager().getDefaultDisplay().getMetrics(dm); + final float scale = dm.density; // Convert the dps to pixels, based on density scale mPaddingDefault = (int) (PADDING_DEFAULT_DP * scale + 0.5f); mPaddingLarge = (int) (PADDING_LARGE_DP * scale + 0.5f); -- 2.43.0