diff options
Diffstat (limited to 'core/java')
-rw-r--r-- | core/java/android/preference/Preference.java | 12 |
1 files changed, 10 insertions, 2 deletions
diff --git a/core/java/android/preference/Preference.java b/core/java/android/preference/Preference.java index a255438..fc39573 100644 --- a/core/java/android/preference/Preference.java +++ b/core/java/android/preference/Preference.java @@ -92,6 +92,7 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis private boolean mPersistent = true; private String mDependencyKey; private Object mDefaultValue; + private boolean mDependencyMet = true; /** * @see #setShouldDisableView(boolean) @@ -594,7 +595,7 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis * @return True if this Preference is enabled, false otherwise. */ public boolean isEnabled() { - return mEnabled; + return mEnabled && mDependencyMet; } /** @@ -1096,7 +1097,14 @@ public class Preference implements Comparable<Preference>, OnDependencyChangeLis * @param disableDependent Set true to disable this Preference. */ public void onDependencyChanged(Preference dependency, boolean disableDependent) { - setEnabled(!disableDependent); + if (mDependencyMet == disableDependent) { + mDependencyMet = !disableDependent; + + // Enabled state can change dependent preferences' states, so notify + notifyDependencyChange(shouldDisableDependents()); + + notifyChanged(); + } } /** |