2015-01-14 130 views
2

從參考文檔中,Android SearchView:setOnFocusChangeListener()和setOnQueryTextFocusChangeListener有什麼區別?

SearchView.setOnQueryTextFocusChangeListener - 設置偵聽程序以通知查詢文本字段的焦點何時更改。

View.setOnFocusChangeListener - 註冊時,這一觀點的重點變成了調用的回調。

那麼,在SearchView的情況下,兩者的區別是什麼?爲什麼他們需要提供setOnQueryTextFocusChangeListenerSearchView已經從View類繼承setOnFocusChangedListener

回答

2

如果你看看source codeSearchView的內部,那麼你會發現在技術上這兩個替代品的工作行爲沒有什麼區別。該代理聽衆的代碼的一部分是:

// Inform any listener of focus changes 
mQueryTextView.setOnFocusChangeListener(new OnFocusChangeListener() { 
    public void onFocusChange(View v, boolean hasFocus) { 
     if (mOnQueryTextFocusChangeListener != null) { 
      mOnQueryTextFocusChangeListener.onFocusChange(SearchView.this, hasFocus); 
     } 
    } 
}); 

的原因是,SearchViewViewGroup其用於查詢文本的目的,並且通過使之更迫在眉睫,以非常具體的名稱單獨的方法被提供,其只需代理AutoCompleteTextView裏面現有的setOnFocusChangeListener方法即可。