Fixed the crash on screen rotation

- Fix b/10607566

Change-Id: I078e59af2a76deb272b870d7708ee4148c68590e
This commit is contained in:
Lifu Tang
2013-09-03 13:47:02 -07:00
parent 7e2227fc65
commit 96f95212b8

View File

@@ -38,12 +38,29 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment
private static final int LOADER_ID_LOCATION_MODE = 1;
/**
* Whether the fragment is actively running.
*/
private boolean mActive = false;
@Override
public void onCreate(Bundle icicle) {
super.onCreate(icicle);
getLoaderManager().initLoader(LOADER_ID_LOCATION_MODE, null, this);
}
@Override
public void onResume() {
super.onResume();
mActive = true;
}
@Override
public void onPause() {
super.onPause();
mActive = false;
}
/** Called when location mode has changed. */
public abstract void onModeChanged(int mode, boolean restricted);
@@ -61,7 +78,9 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment
}
mode = Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE,
Settings.Secure.LOCATION_MODE_OFF);
if (mActive) {
onModeChanged(mode, true);
}
return;
}
Settings.Secure.putInt(getContentResolver(), Settings.Secure.LOCATION_MODE, mode);
@@ -69,10 +88,12 @@ public abstract class LocationSettingsBase extends SettingsPreferenceFragment
}
public void refreshLocationMode() {
if (mActive) {
int mode = Settings.Secure.getInt(getContentResolver(), Settings.Secure.LOCATION_MODE,
Settings.Secure.LOCATION_MODE_OFF);
onModeChanged(mode, isRestricted());
}
}
@Override
public Loader<Cursor> onCreateLoader(int id, Bundle args) {