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
This commit is contained in:
kun.tang
2017-07-08 11:09:02 +08:00
parent 31a2f413f8
commit 0c06bab9cc

View File

@@ -357,7 +357,6 @@ public class SimStatus extends SettingsPreferenceFragment {
void updateSignalStrength(SignalStrength signalStrength) { void updateSignalStrength(SignalStrength signalStrength) {
if (mSignalStrength != null) { if (mSignalStrength != null) {
final int state = mPhone.getServiceState().getState(); final int state = mPhone.getServiceState().getState();
Resources r = getResources();
if ((ServiceState.STATE_OUT_OF_SERVICE == state) || if ((ServiceState.STATE_OUT_OF_SERVICE == state) ||
(ServiceState.STATE_POWER_OFF == state)) { (ServiceState.STATE_POWER_OFF == state)) {
@@ -376,7 +375,7 @@ public class SimStatus extends SettingsPreferenceFragment {
signalAsu = 0; signalAsu = 0;
} }
mSignalStrength.setSummary(r.getString(R.string.sim_signal_strength, mSignalStrength.setSummary(mRes.getString(R.string.sim_signal_strength,
signalDbm, signalAsu)); signalDbm, signalAsu));
} }
} }