Skip starting new fragment, if the manager is in paused state
Bug: 111684268
Change-Id: Ice529356733d98181371e37beed7a34922313cc4
diff --git a/src/com/android/launcher3/SettingsActivity.java b/src/com/android/launcher3/SettingsActivity.java
index 8589b7e..1f80226 100644
--- a/src/com/android/launcher3/SettingsActivity.java
+++ b/src/com/android/launcher3/SettingsActivity.java
@@ -88,6 +88,11 @@
@Override
public boolean onPreferenceStartFragment(
PreferenceFragment preferenceFragment, Preference pref) {
+ if (getFragmentManager().isStateSaved()) {
+ // Sometimes onClick can come after onPause because of being posted on the handler.
+ // Skip starting new fragments in that case.
+ return false;
+ }
Fragment f = Fragment.instantiate(this, pref.getFragment(), pref.getExtras());
if (f instanceof DialogFragment) {
((DialogFragment) f).show(getFragmentManager(), pref.getKey());
@@ -241,8 +246,7 @@
* Content observer which listens for system badging setting changes,
* and updates the launcher badging setting subtext accordingly.
*/
- private static class IconBadgingObserver extends SettingsObserver.Secure
- implements Preference.OnPreferenceClickListener {
+ private static class IconBadgingObserver extends SettingsObserver.Secure {
private final ButtonPreference mBadgingPref;
private final ContentResolver mResolver;
@@ -275,16 +279,11 @@
}
}
mBadgingPref.setWidgetFrameVisible(!serviceEnabled);
- mBadgingPref.setOnPreferenceClickListener(serviceEnabled ? null : this);
+ mBadgingPref.setFragment(
+ serviceEnabled ? null : NotificationAccessConfirmation.class.getName());
mBadgingPref.setSummary(summary);
}
-
- @Override
- public boolean onPreferenceClick(Preference preference) {
- new NotificationAccessConfirmation().show(mFragmentManager, "notification_access");
- return true;
- }
}
public static class NotificationAccessConfirmation