2015-01-14 13 views
5

Ho un SearchView in un'attività; quando l'utente esegue la ricerca, un Fragment contenente i risultati della ricerca si aggiunge alla stessa attività.Android SearchView OnFocusChangeListener: onFocusChange non è chiamato affatto

Ora quello che voglio è che quando il SearchView si fa clic (così diventa la messa a fuoco, e l'utente digita lì), i Fragment già visualizzati (contente il risultati di ricerca) dovrebbe diventare dim/offuscata.

così ho cercato di impostare un OnFocusChangedListener per la SearchView nel metodo di callback del ciclo di vita del onActivityCreatedFragment, ma non sembra di essere chiamato a tutti.

final Activity myActivity = getActivity(); 
     Log.i(TAG, "myActivity>"+myActivity.toString());//check 
     SearchView mySearchView = (SearchView) myActivity.findViewById(R.id.searchActivity_searchView); 
     Log.i(TAG, "mySearchView>"+mySearchView.toString());//check 
     mySearchView.setOnFocusChangeListener(new OnFocusChangeListener() { 
      @SuppressLint("NewApi") 
      @Override 
      public void onFocusChange(View v, boolean hasFocus) { 
       Log.i(TAG, "onFocusChange OF OnFocusChangeListener IN SearchResultsFragment CALLED."); 
       if (hasFocus) { 
        myActivity.getWindow().setDimAmount(1.0f); 
       } 
      } 
     }); 

Quindi mi manca qualcosa? Cosa devo fare per ottenere il onFocusChanged chiamato quando l'utente fa clic e quindi attiva lo SearchView per digitare la query di ricerca in esso?

Nota: Se è necessario un intero codice SSCCE, si prega di chiedere nei commenti, lo posterò.

+0

Perché non provarlo con setOnClickListener()? – MohanRaj

+0

@MohanRaj Ho appena provato che, anche questo non viene chiamato = ( – Solace

+0

Puoi provare direttamente questo nell'attività che contiene la tua vista di ricerca, invece di ottenere il riferimento all'interno del frammento? – MohanRaj

risposta

20

Siamo spiacenti per la risposta in ritardo, ma ho avuto lo stesso problema e ho trovato questa domanda durante la ricerca, quindi potrebbe aiutare le altre persone.

Hai provato a utilizzare mySearchView.setOnQueryTextFocusChangeListener() anziché mySearchView.setOnFocusChangeListener()?

Ha funzionato per me.

+0

Dovrò provarlo. Ti risponderò dopo. – Solace

+0

Grazie, ha funzionato –

+0

Grazie, ha funzionato! –