Merge "Fix NPE java.lang.IllegalStateException: Observer com.android.settings.SettingsPreferenceFragment$1@373ee1aa is already registered."
This commit is contained in:
committed by
Android (Google) Code Review
commit
3e000df132
@@ -62,6 +62,7 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
private String mPreferenceKey;
|
private String mPreferenceKey;
|
||||||
private boolean mPreferenceHighlighted = false;
|
private boolean mPreferenceHighlighted = false;
|
||||||
|
|
||||||
|
private boolean mIsDataSetObserverRegistered = false;
|
||||||
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
private DataSetObserver mDataSetObserver = new DataSetObserver() {
|
||||||
@Override
|
@Override
|
||||||
public void onChanged() {
|
public void onChanged() {
|
||||||
@@ -112,14 +113,20 @@ public class SettingsPreferenceFragment extends PreferenceFragment implements Di
|
|||||||
|
|
||||||
@Override
|
@Override
|
||||||
protected void onBindPreferences() {
|
protected void onBindPreferences() {
|
||||||
getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
|
if (!mIsDataSetObserverRegistered) {
|
||||||
|
getPreferenceScreen().getRootAdapter().registerDataSetObserver(mDataSetObserver);
|
||||||
|
mIsDataSetObserverRegistered = true;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public void onDestroy() {
|
public void onDestroy() {
|
||||||
super.onDestroy();
|
super.onDestroy();
|
||||||
|
|
||||||
getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
|
if (mIsDataSetObserverRegistered) {
|
||||||
|
getPreferenceScreen().getRootAdapter().unregisterDataSetObserver(mDataSetObserver);
|
||||||
|
mIsDataSetObserverRegistered = false;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
public void highlightPreferenceIfNeeded() {
|
public void highlightPreferenceIfNeeded() {
|
||||||
|
Reference in New Issue
Block a user