From 5e18c40d28cba98607d34f50e972c4d977c3dd6c Mon Sep 17 00:00:00 2001 From: Mykola Kondratenko Date: Mon, 9 Feb 2015 19:20:28 +0100 Subject: [PATCH] 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 --- core/java/android/preference/PreferenceFragment.java | 3 +++ 1 file changed, 3 insertions(+) diff --git a/core/java/android/preference/PreferenceFragment.java b/core/java/android/preference/PreferenceFragment.java index e95e6e21b2518..a6d2cbee62974 100644 --- a/core/java/android/preference/PreferenceFragment.java +++ b/core/java/android/preference/PreferenceFragment.java @@ -212,6 +212,9 @@ public abstract class PreferenceFragment extends Fragment implements @Override public void onDestroyView() { + if (mList != null) { + mList.setOnKeyListener(null); + } mList = null; mHandler.removeCallbacks(mRequestFocus); mHandler.removeMessages(MSG_BIND_PREFERENCES);