Honeycomb ActionBar中的SearchView上的KeyListener不起作用

这是我的代码。 在search框中input时,从不会调用onKey()方法。 我在设置听众方面做错了什么? 我在onKey()方法中有一个断点,这是我知道它不会触发。

@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; } 

Solutions Collecting From Web of "Honeycomb ActionBar中的SearchView上的KeyListener不起作用"

添加一个OnQueryTextListener , 在这里看到我的答案

 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); 

如果你想获得一个关于serach视图的密钥,你可以使用下面的代码

  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; } });