Fixed the crash on screen rotation
- Fix b/10607566 Change-Id: I078e59af2a76deb272b870d7708ee4148c68590e
This commit is contained in:
@@ -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) {
|
||||
|
Reference in New Issue
Block a user