diff options
author | Fabrice Di Meglio <fdimeglio@google.com> | 2014-04-21 11:40:21 -0700 |
---|---|---|
committer | Fabrice Di Meglio <fdimeglio@google.com> | 2014-04-21 11:49:36 -0700 |
commit | 829c8fb2bc728cb871bc398c66ff71b56aa7ebb9 (patch) | |
tree | 559d46153ad0b209eb4b99b936e9c7391c35cbd7 /src/com/android/settings/SettingsPreferenceFragment.java | |
parent | 131f49feea754c25954945f4cd47a2f1223a6fdf (diff) | |
download | packages_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.java | 11 |
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() { |