2015-01-14 7 views
2

참조 문서에서Android SearchView : setOnFocusChangeListener()와 setOnQueryTextFocusChangeListener의 차이점은 무엇입니까?

SearchView.setOnQueryTextFocusChangeListener - 쿼리 텍스트 필드의 포커스가 변경 될 때 알려주도록 리스너를 설정합니다.

View.setOnFocusChangeListener

-이 뷰의 초점이 변경 될 때 호출되는 콜백을 등록합니다.

따라서 SearchView의 경우 두 가지의 차이점은 무엇입니까? SearchViewsetOnFocusChangedListener이 (가) View 클래스에서 이미 상속 된 경우 setOnQueryTextFocusChangeListener을 제공해야하는 이유는 무엇입니까?

답변

2

SearchView에 대해 source code을 보면 기술적으로이 두 가지 대체 방법의 작동 방식에 차이가 없음을 알 수 있습니다. 청취자로 프록시 코드의 일부이다 :

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

이유는 SearchView, 그리고 더 임박하여 텍스트 쿼리의 목적을 제공하는 ViewGroup 있다는 매우 특정한 이름을 가진 별도의 방법이 제공된다 AutoCompleteTextView의 기존 setOnFocusChangeListener 방법으로 프록시합니다.

관련 문제