From 0c06bab9cc67bf50cbb12e7da637627d3da47646 Mon Sep 17 00:00:00 2001 From: "kun.tang" Date: Sat, 8 Jul 2017 11:09:02 +0800 Subject: [PATCH] Fix Phone crash when rorate screen on SimStatus. When rorate screen on SimStatus, Fragment not attached to Activity, phone crash. Solution: use mRes to getString Test: build 07-07 13:20:27.237 696 696 E AndroidRuntime: Process: com.android.phone, PID: 696 07-07 13:20:27.237 696 696 E AndroidRuntime: java.lang.IllegalStateException: Fragment SimStatus{d1e4bb3} not attached to Activity 07-07 13:20:27.237 696 696 E AndroidRuntime: at android.app.Fragment.getResources(Fragment.java:861) 07-07 13:20:27.237 696 696 E AndroidRuntime: at com.android.settings.deviceinfo.SimStatus.updateSignalStrength(SimStatus.java:359) 07-07 13:20:27.237 696 696 E AndroidRuntime: at com.android.settings.deviceinfo.SimStatus$4.onSignalStrengthsChanged(SimStatus.java:444) 07-07 13:20:27.237 696 696 E AndroidRuntime: at android.telephony.PhoneStateListener$1.handleMessage(PhoneStateListener.java:334) 07-07 13:20:27.237 696 696 E AndroidRuntime: at android.os.Handler.dispatchMessage(Handler.java:105) 07-07 13:20:27.237 696 696 E AndroidRuntime: at android.os.Looper.loop(Looper.java:164) 07-07 13:20:27.237 696 696 E AndroidRuntime: at android.app.ActivityThread.main(ActivityThread.java:6558) 07-07 13:20:27.237 696 696 E AndroidRuntime: at java.lang.reflect.Method.invoke(Native Method) 07-07 13:20:27.237 696 696 E AndroidRuntime: at com.android.internal.os.Zygote$MethodAndArgsCaller.run(Zygot Change-Id: Ife8f2e3ed8c4fe6db0fe784a43910768ff3ff4d1 --- src/com/android/settings/deviceinfo/SimStatus.java | 3 +-- 1 file changed, 1 insertion(+), 2 deletions(-) diff --git a/src/com/android/settings/deviceinfo/SimStatus.java b/src/com/android/settings/deviceinfo/SimStatus.java index 1fe682225d5..4241285e341 100644 --- a/src/com/android/settings/deviceinfo/SimStatus.java +++ b/src/com/android/settings/deviceinfo/SimStatus.java @@ -357,7 +357,6 @@ public class SimStatus extends SettingsPreferenceFragment { void updateSignalStrength(SignalStrength signalStrength) { if (mSignalStrength != null) { final int state = mPhone.getServiceState().getState(); - Resources r = getResources(); if ((ServiceState.STATE_OUT_OF_SERVICE == state) || (ServiceState.STATE_POWER_OFF == state)) { @@ -376,7 +375,7 @@ public class SimStatus extends SettingsPreferenceFragment { signalAsu = 0; } - mSignalStrength.setSummary(r.getString(R.string.sim_signal_strength, + mSignalStrength.setSummary(mRes.getString(R.string.sim_signal_strength, signalDbm, signalAsu)); } }