summaryrefslogtreecommitdiffstats
path: root/src/com/android/settings/SettingsPreferenceFragment.java
diff options
context:
space:
mode:
authorFabrice Di Meglio <fdimeglio@google.com>2014-04-21 11:40:21 -0700
committerFabrice Di Meglio <fdimeglio@google.com>2014-04-21 11:49:36 -0700
commit829c8fb2bc728cb871bc398c66ff71b56aa7ebb9 (patch)
tree559d46153ad0b209eb4b99b936e9c7391c35cbd7 /src/com/android/settings/SettingsPreferenceFragment.java
parent131f49feea754c25954945f4cd47a2f1223a6fdf (diff)
downloadpackages_apps_Settings-829c8fb2bc728cb871bc398c66ff71b56aa7ebb9.zip
packages_apps_Settings-829c8fb2bc728cb871bc398c66ff71b56aa7ebb9.tar.gz
packages_apps_Settings-829c8fb2bc728cb871bc398c66ff71b56aa7ebb9.tar.bz2
Fix NPE java.lang.IllegalStateException: Observer com.android.settings.SettingsPreferenceFragment$1@373ee1aa is already registered.
- propertly register / unregister the DataSetObserver Change-Id: I04de3c7ec14e71591edc174ebafabe9a1fb165c2
Diffstat (limited to 'src/com/android/settings/SettingsPreferenceFragment.java')
-rw-r--r--src/com/android/settings/SettingsPreferenceFragment.java11
1 files changed, 9 insertions, 2 deletions
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 6b41349..f32f8ba 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -62,6 +62,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
private String mPreferenceKey;
private boolean mPreferenceHighlighted = false;
+ private boolean mIsDataSetObserverRegistered = false;
private DataSetObserver mDataSetObserver = new DataSetObserver() {
@Override
public void onChanged() {
@@ -112,14 +113,20 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
@Override
protected void onBindPreferences() {
- getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
+ if (!mIsDataSetObserverRegistered) {
+ getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
+ mIsDataSetObserverRegistered = true;
+ }
}
@Override
public void onDestroy() {
super.onDestroy();
- getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
+ if (mIsDataSetObserverRegistered) {
+ getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
+ mIsDataSetObserverRegistered = false;
+ }
}
public void highlightPreferenceIfNeeded() {