Autore Topic: AutoCompleteTextView e tasto BACK  (Letto 730 volte)

Offline traficante.donato

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung A5
  • Sistema operativo:
    Windows
AutoCompleteTextView e tasto BACK
« il: 24 Maggio 2017, 18:33:58 CEST »
0
Ciao a tutti,

ho un fragment nella cui actionbar ho inserito un'action che non fa altro di rendere visibile un campo AutoCompleteTextView che riesco a gestire completamente.
Il mio problema è quando clicco il tasto INDIETRO del device, al primo tocco mi fa scomparire la tastiera, ed è OK, al secondo tocco (il focus è dentro AutoCompleteTextView )  del tasto INDIETRO del device mi esce completamente fuori dall'app, mentre io vorrei intercettare tale evento e far chiudere AutoCompleteTextView .

Questo è il codice che gestice AutoCompleteTextView
Codice: [Seleziona]
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
        // aggiungo la lente per la ricerca nell'actionbar
        super.onCreateOptionsMenu(menu, inflater);
        inflater.inflate(R.menu.search_menu, menu);
    }

    public boolean onOptionsItemSelected(MenuItem item) {
        int id = item.getItemId();
        if(id == R.id.search){
            inSearch=true;
            TextView txtOggi =(TextView )rootView.findViewById(R.id.txtOggi);
            txtOggi.setVisibility(View.INVISIBLE);

            autoComplete = (AutoCompleteTextView)rootView.findViewById(R.id.autoComplete);
            autoComplete.setVisibility(View.VISIBLE);

            //forzo l'uscite della tastiera
            autoComplete.post(new Runnable() {
                public void run() {
                    autoComplete.requestFocusFromTouch();
                    InputMethodManager lManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                    lManager.showSoftInput(autoComplete, 0);
                }
            });

            materiale = getResources().getStringArray(R.array.grid_testo);

            ArrayAdapter<Tipo> adapterSearch;

            mList = retrieveTipo();
            adapterSearch = new AutocompleteAdapter(getActivity(), R.layout.autocomplete_layout, R.id.nome, mList);
            autoComplete.setAdapter(adapterSearch);
            // nr caratteri
            autoComplete.setThreshold(1);

            autoComplete.setOnItemClickListener(new AdapterView.OnItemClickListener() {
                public void onItemClick(AdapterView<?> arg0, View view, int arg2, long arg3) {
                   //codice per gestire i vari ITEM
           
            });

            return true;
        }

        return super.onOptionsItemSelected(item);
    }


Ho provato ad intercettare la pressione del tasto INDIETRO ma funziona sempre tranne quando il focus è dentro AutoCompleteTextView , cioè quando mi serve.
Codice: [Seleziona]
    public void onResume() {
        super.onResume();
        Log.e(TAG, "VEROVERO");

        if(getView() == null){
            return;
        }

        getView().setFocusableInTouchMode(true);
        getView().requestFocus();
        getView().setOnKeyListener(new View.OnKeyListener() {
            @Override
            public boolean onKey(View v, int keyCode, KeyEvent event) {

                if (event.getAction() == KeyEvent.ACTION_UP && keyCode == KeyEvent.KEYCODE_BACK){
                    // handle back button's click listener
                    Log.e(TAG, "VEROVERO 2");
                    return true;
                }
                return false;
            }
        });
    }

Grazie in anticipo

Offline tonno16

  • Utente storico
  • *****
  • Post: 1233
  • Respect: +60
    • Mostra profilo
  • Dispositivo Android:
    moto g
  • Play Store ID:
    Diego Tonini
  • Sistema operativo:
    OpenSuse
Re:AutoCompleteTextView e tasto BACK
« Risposta #1 il: 25 Maggio 2017, 07:41:03 CEST »
0
È mattina ma esiste un metodo. OnBackButtonPressed di cui devi fare loverride in activity

Offline traficante.donato

  • Nuovo arrivato
  • *
  • Post: 24
  • Respect: 0
    • Mostra profilo
  • Dispositivo Android:
    Samsung A5
  • Sistema operativo:
    Windows
Re:AutoCompleteTextView e tasto BACK
« Risposta #2 il: 25 Maggio 2017, 08:22:28 CEST »
0
Grazie per l'aiuto,

l'override lo devo fare nell'activity che contiene il fragment ? O direttamente nel Fragment ?

Grazie

Offline capitancooker

  • Utente junior
  • **
  • Post: 119
  • Marco
  • Respect: +10
    • Mostra profilo
  • Dispositivo Android:
    Nexus 5
  • Sistema operativo:
    macOS High Sierra
Re:AutoCompleteTextView e tasto BACK
« Risposta #3 il: 25 Maggio 2017, 08:23:16 CEST »
0
Come suggerito da Diego, il metodo per intercettare il tasto Back nell'activity è
Codice (Java): [Seleziona]
   @Override
    public void onBackPressed() {
           super.onBackPressed();
    }
Ciao,
Marco
Se sbaglio, correggetemi.