Merge "Setting result earlier than onPause" into sc-dev
diff --git a/src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java b/src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java
index 25d7332..3765dd9 100644
--- a/src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java
+++ b/src/com/android/settings/applications/appinfo/AlarmsAndRemindersDetails.java
@@ -81,6 +81,9 @@
if (savedInstanceState != null) {
mUncommittedState = (Boolean) savedInstanceState.get(UNCOMMITTED_STATE_KEY);
+ if (mUncommittedState != null && isAppSpecific()) {
+ setResult(mUncommittedState ? RESULT_OK : RESULT_CANCELED);
+ }
}
addPreferencesFromResource(R.xml.alarms_and_reminders);
mSwitchPref = findPreference(KEY_SWITCH);
@@ -97,9 +100,11 @@
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
- final boolean checked = (Boolean) newValue;
if (preference == mSwitchPref) {
- mUncommittedState = checked;
+ mUncommittedState = (Boolean) newValue;
+ if (isAppSpecific()) {
+ setResult(mUncommittedState ? RESULT_OK : RESULT_CANCELED);
+ }
refreshUi();
return true;
}
@@ -125,6 +130,11 @@
newState ? 1 : 0);
}
+ private boolean isAppSpecific() {
+ return Settings.AlarmsAndRemindersAppActivity.class.getName().equals(
+ getIntent().getComponent().getClassName());
+ }
+
@Override
public void onPause() {
super.onPause();
@@ -133,10 +143,6 @@
}
if (mPermissionState != null && mUncommittedState != null
&& mUncommittedState != mPermissionState.isAllowed()) {
- if (Settings.AlarmsAndRemindersAppActivity.class.getName().equals(
- getIntent().getComponent().getClassName())) {
- setResult(mUncommittedState ? RESULT_OK : RESULT_CANCELED);
- }
setCanScheduleAlarms(mUncommittedState);
logPermissionChange(mUncommittedState, mPackageName);
mUncommittedState = null;