diff options
| author | 2013-10-08 11:25:32 -0700 | |
|---|---|---|
| committer | 2013-10-08 12:05:24 -0700 | |
| commit | 53e8a26d6178c41c59c3dcad4a8a04ce2449f246 (patch) | |
| tree | 129bc4fa4b4899ebc3af0a88da2c29e581541d3b | |
| parent | 46ec729a88079d3878a95a57ab703e64638dfc1a (diff) | |
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
| -rw-r--r-- | packages/PrintSpooler/src/com/android/printspooler/SelectPrinterFragment.java | 15 |
1 files 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 20315caae650..7a91cef275b2 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)); + } } }); |