这是我的代码.在搜索框中输入时,永远不会调用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; }
解决方法
添加OnQueryTextListener,请参阅我的答案
here
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);