From 21dba1f0e7a7df64e4e9211153523f09d4bdd9df Mon Sep 17 00:00:00 2001 From: Raju Yadav Date: Tue, 25 Nov 2014 13:26:17 +0100 Subject: [PATCH] IllegalStateException fixed in print service settings Settings crashed due to IllegalStateException as OnQueryTextListener refers to an already detached view. The listener is set to null on press of home key (onPause). Change-Id: I96052f95689ae17dd1b4e9d1c313100b7b47a599 --- .../settings/print/PrintServiceSettingsFragment.java | 11 ++++++++--- 1 file changed, 8 insertions(+), 3 deletions(-) diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java index 49fd6df78d4..e36e92cb6c7 100644 --- a/src/com/android/settings/print/PrintServiceSettingsFragment.java +++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java @@ -137,6 +137,8 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment private boolean mServiceEnabled; + private SearchView mSearchView; + @Override public void onResume() { super.onResume(); @@ -148,6 +150,9 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment @Override public void onPause() { mSettingsContentObserver.unregister(getContentResolver()); + if (mSearchView != null) { + mSearchView.setOnQueryTextListener(null); + } super.onPause(); } @@ -408,8 +413,8 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment MenuItem searchItem = menu.findItem(R.id.print_menu_item_search); if (mServiceEnabled && mPrintersAdapter.getUnfilteredCount() > 0) { - SearchView searchView = (SearchView) searchItem.getActionView(); - searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { + mSearchView = (SearchView) searchItem.getActionView(); + mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { return true; @@ -421,7 +426,7 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment return true; } }); - searchView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { + mSearchView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View view) { if (AccessibilityManager.getInstance(getActivity()).isEnabled()) {