From 53e8a26d6178c41c59c3dcad4a8a04ce2449f246 Mon Sep 17 00:00:00 2001 From: Svetoslav Date: Tue, 8 Oct 2013 11:25:32 -0700 Subject: [PATCH] Fix a crash in the select printers activity. 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: I4a47a8ed3b6a13544cf17b4395560246a33f0e2d --- .../printspooler/SelectPrinterFragment.java | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java b/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java index 20315caae650a..7a91cef275b23 100644 --- a/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java +++ b/packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java @@ -52,6 +52,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.ArrayAdapter; import android.widget.BaseAdapter; import android.widget.Filter; @@ -138,13 +139,19 @@ public final class SelectPrinterFragment extends ListFragment { 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)); + } } });