From 39392ef9b0434ec704b52178f8dbb3adcfef58f7 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Tue, 8 Oct 2013 12:08:14 -0700 Subject: [PATCH] Fix a crash in the print service settigns. When the search view is attached and detached we announce that for accessibility. The trouble is that if the activity is being torn down we are trying to access resources from a fragment that is detached and the qcrash occurs. This change does not try to access resources if the activity is finishing and also we do not load resource strings if accessibility is not enabled. bug:11127814 Change-Id: If3e97b6e94687775386a43c8fa54fd45140306eb --- .../print/PrintServiceSettingsFragment.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java index f739b4da709..326dd78c30c 100644 --- a/src/com/android/settings/print/PrintServiceSettingsFragment.java +++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java @@ -53,6 +53,7 @@ import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; +import android.view.accessibility.AccessibilityManager; import android.widget.BaseAdapter; import android.widget.CompoundButton; import android.widget.CompoundButton.OnCheckedChangeListener; @@ -425,13 +426,19 @@ public class PrintServiceSettingsFragment extends SettingsPreferenceFragment searchView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { @Override public void onViewAttachedToWindow(View view) { - view.announceForAccessibility(getString( - R.string.print_search_box_shown_utterance)); + if (AccessibilityManager.getInstance(getActivity()).isEnabled()) { + view.announceForAccessibility(getString( + R.string.print_search_box_shown_utterance)); + } } @Override public void onViewDetachedFromWindow(View view) { - view.announceForAccessibility(getString( - R.string.print_search_box_hidden_utterance)); + Activity activity = getActivity(); + if (activity != null && !activity.isFinishing() + && AccessibilityManager.getInstance(activity).isEnabled()) { + view.announceForAccessibility(getString( + R.string.print_search_box_hidden_utterance)); + } } }); } else {