Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 53e8a26d authored by Svetoslav's avatar Svetoslav
Browse files

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
parent 46ec729a
Loading
Loading
Loading
Loading
+11 −4
Original line number Diff line number Diff line
@@ -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,14 +139,20 @@ public final class SelectPrinterFragment extends ListFragment {
        searchView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() {
            @Override
            public void onViewAttachedToWindow(View view) {
                if (AccessibilityManager.getInstance(getActivity()).isEnabled()) {
                    view.announceForAccessibility(getString(
                            R.string.print_search_box_shown_utterance));
                }
            }
            @Override
            public void onViewDetachedFromWindow(View view) {
                Activity activity = getActivity();
                if (activity != null && !activity.isFinishing()
                        && AccessibilityManager.getInstance(activity).isEnabled()) {
                    view.announceForAccessibility(getString(
                            R.string.print_search_box_hidden_utterance));
                }
            }
        });

        if (mAddPrinterServices.isEmpty()) {