SearchView가있는 Fragment에서 작업 중입니다. SearchView를 닫았다가 다시 열면 입력 한 쿼리가 사라집니다.
문제는이 행동을 원하지 않는다는 것입니다. Google Play 스토어의 SearchView와 같은 동작을 원합니다. 쿼리를 닫고 열면 여전히 존재합니다.
searchable.xml이 없다는 사실과 관련이 있습니까?
문서에 따라 onCloseListener를 만들어야합니다.
리스너가 텍스트 필드를 지우고 닫는 기본 동작을 재정의하려면 true를 반환하고 그렇지 않으면 false를 반환합니다.
http://developer.android.com/reference/android/widget/SearchView.OnCloseListener.html#onClose () 참조
쿼리 TextView가 비어있는 경우에만 onCloseListener를 호출하는 것으로 보이는 SearchView의 소스 코드를 살펴본 후 이것이 제대로 작동하는지 확실하지 않습니다.
확인 SearchView.onCloseClicked을 () 무슨 일이 일어나고 있는지 확인합니다 :
private void onCloseClicked() {
CharSequence text = mQueryTextView.getText();
if (TextUtils.isEmpty(text)) {
if (mIconifiedByDefault) {
// If the app doesn't override the close behavior
if (mOnCloseListener == null || !mOnCloseListener.onClose()) {
// hide the keyboard and remove focus
clearFocus();
// collapse the search field
updateViewsVisibility(true);
}
}
} else {
mQueryTextView.setText("");
mQueryTextView.requestFocus();
setImeVisibility(true);
}
}
따라서 onCloseListener를 재정의해도 작동하지 않는 경우입니다.
SearchView는 공용이므로 클래스를 확장하고 onCloseClicked ()의 논리를 수정하거나 onActionViewExpanded / onActionViewCollapsed를 재정 의하여 쿼리 문자열을 복원하고 저장할 수 있습니다.
OnQueryTextListener에 쿼리를 저장 한 다음 onOptionsItemSelected에서 setQuery (savedQuery, false)를 호출 할 수도 있습니다.
이 기사는 인터넷에서 수집됩니다. 재 인쇄 할 때 출처를 알려주십시오.
침해가 발생한 경우 연락 주시기 바랍니다[email protected] 삭제
몇 마디 만하겠습니다