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