From c56fc753e2e2d35221a1a4df353a435098268ec4 Mon Sep 17 00:00:00 2001 From: Amith Yamasani Date: Tue, 14 Jun 2011 15:07:49 -0700 Subject: [PATCH] Stability fixes for PreferenceFragments. Unregister the click listener as early as possible, so that clicks don't get delivered after the activity is detached. Bug: 4599586 This should also fix: 4603030, 4601105, 4598715, 4598712. Change-Id: I7bcff719bed14ea61b482bd6d29ae1fa5e322e41 --- core/java/android/preference/PreferenceFragment.java | 9 +++++++-- 1 file changed, 7 insertions(+), 2 deletions(-) diff --git a/core/java/android/preference/PreferenceFragment.java b/core/java/android/preference/PreferenceFragment.java index 4e22ba08d5819..7766b54e748ef 100644 --- a/core/java/android/preference/PreferenceFragment.java +++ b/core/java/android/preference/PreferenceFragment.java @@ -145,7 +145,6 @@ public abstract class PreferenceFragment extends Fragment implements super.onCreate(savedInstanceState); mPreferenceManager = new PreferenceManager(getActivity(), FIRST_REQUEST_CODE); mPreferenceManager.setFragment(this); - mPreferenceManager.setOnPreferenceTreeClickListener(this); } @Override @@ -177,10 +176,17 @@ public abstract class PreferenceFragment extends Fragment implements } } + @Override + public void onStart() { + super.onStart(); + mPreferenceManager.setOnPreferenceTreeClickListener(this); + } + @Override public void onStop() { super.onStop(); mPreferenceManager.dispatchActivityStop(); + mPreferenceManager.setOnPreferenceTreeClickListener(null); } @Override @@ -195,7 +201,6 @@ public abstract class PreferenceFragment extends Fragment implements public void onDestroy() { super.onDestroy(); mPreferenceManager.dispatchActivityDestroy(); - mPreferenceManager.setOnPreferenceTreeClickListener(null); } @Override