Question

Voici mon code. La méthode onKey () n'est jamais appelée lors de la saisie dans la zone de recherche. Est-ce que je fais quelque chose de mal dans la configuration de l'auditeur? J'ai un point d'arrêt dans la méthode onkey (), c'est ainsi que je sais qu'il ne se déclenche pas.

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.locations_map_menu, menu);

    ActionBar ab = getActionBar();
    ab.setBackgroundDrawable(getResources().getDrawable(R.drawable.actionbar));
    ab.setDisplayShowTitleEnabled(false);

    SearchView searchView = (SearchView) menu.findItem(R.id.menu_search).getActionView();
    searchView.setOnKeyListener(new OnKeyListener() {

        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {
            return true; // This code never fires
        }
    });
    return true;
}
Était-ce utile?

La solution

Ajouter un OnQueryTextListener, voir ma réponse ici

final SearchView.OnQueryTextListener queryTextListener = new SearchView.OnQueryTextListener() { 
    @Override 
    public boolean onQueryTextChange(String newText) { 
        // Do something 
        return true; 
    } 

    @Override 
    public boolean onQueryTextSubmit(String query) { 
        // Do something 
        return true; 
    } 
}; 

searchView.setOnQueryTextListener(queryTextListener); 

Autres conseils

Si vous souhaitez obtenir une clé sur la vue Serach, vous pouvez utiliser le code ci-dessous

    TextView searchText = (TextView) searchView.findViewById(android.support.v7.appcompat.R.id.search_src_text);
  searchText.setOnKeyListener(new View.OnKeyListener() {
        @Override
        public boolean onKey(View v, int keyCode, KeyEvent event) {

            return false;
        }
    });
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top