Fix NPE java.lang.IllegalStateException: Observer com.android.settings.SettingsPreferenceFragment$1@373ee1aa is already registered.

- propertly register / unregister the DataSetObserver

Change-Id: I04de3c7ec14e71591edc174ebafabe9a1fb165c2
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 @@
     private String mPreferenceKey;
     private boolean mPreferenceHighlighted = false;
 
+    private boolean mIsDataSetObserverRegistered = false;
     private DataSetObserver mDataSetObserver = new DataSetObserver() {
         @Override
         public void onChanged() {
@@ -112,14 +113,20 @@
 
     @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() {