2014-10-10 89 views
13

我有一个SearchView。当用户点击键盘搜索按钮时,我需要进行服务器调用。听众的代码是什么样的?我想我必须使用OnClickListener。但知道它是搜索按钮的内部代码,我不知道如何确定。如何收听searchView中的键盘搜索按钮

+0

它发送该KeyEvent#KEYCODE_SEARCH键,以便你能看到的是与onKeyEventListener或活动的dispatchKeyEvent – DeeV 2014-10-10 19:31:52

+0

@DeeV的文档说onKeyEventListener是硬件密钥。如果它同样适用于软键盘,为什么要特别说硬件?无论如何,我会尝试它,因为你说这是答案。 – learner 2014-10-10 19:34:29

+0

@DeeV在提出问题之前,我已经尝试了onEditorActionListener。但是SearchView无法识别它。 – learner 2014-10-10 19:39:32

回答

50

我曾经做过这样的

onQueryTextSubmit是你正在寻找的方法。

在您的搜索视图中设置setOnQueryTextListener

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    // Inflate the menu; this adds items to the action bar if it is present. 
    getMenuInflater().inflate(R.menu.main, menu); 

    MenuItem searchItem = menu.findItem(R.id.search_city); 
    searchView = (SearchView) searchItem.getActionView(); 
    searchView.setQueryHint("Search View Hint"); 

    searchView.setOnQueryTextListener(new OnQueryTextListener() { 

     @Override 
     public boolean onQueryTextChange(String newText) { 
      //Log.e("onQueryTextChange", "called"); 
      return false; 
     } 

     @Override 
     public boolean onQueryTextSubmit(String query) { 


      // Do your task here 

      return false; 
     } 

    }); 

    return true; 
} 

希望这有助于

+1

Yay!好吧,你击败了我的回应。我会投票! – 2014-10-10 19:46:19