Reset the setOnKeyListener callback when view is destroyed
NPE happened in mListOnKeyListener.onKey().
It looks like onKey in some cases is sent to a view while beeing
destroyed. When callback is received mList is referenced causing
the NPE.
Remove OnKeyListener first when destroying view so we can not get
any unwanted key callbacks.
Bug: 22333421
Change-Id: I94b198e31a2f9fbdd7fbadf4971be7720dcfad8d
diff --git a/core/java/android/preference/PreferenceFragment.java b/core/java/android/preference/PreferenceFragment.java
index e95e6e2..a6d2cbe 100644
--- a/core/java/android/preference/PreferenceFragment.java
+++ b/core/java/android/preference/PreferenceFragment.java
@@ -212,6 +212,9 @@
@Override
public void onDestroyView() {
+ if (mList != null) {
+ mList.setOnKeyListener(null);
+ }
mList = null;
mHandler.removeCallbacks(mRequestFocus);
mHandler.removeMessages(MSG_BIND_PREFERENCES);