Tôi đang cố gắng sử dụng SearchView và tôi có mọi thứ để làm việc, ngoại trừ khi tôi muốn tìm kiếm một chuỗi trống.
OnQueryTextChange không phản ứng khi tôi xóa ký tự cuối cùng, nhưng tôi muốn người dùng có thể nhấn nút tìm kiếm khi trường tìm kiếm trống.Android SearchView chuỗi trống
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);
Tôi cũng đã thử sử dụng OnKeyListner. nhưng nó dường như không hoạt động.
searchView.setOnKeyListener(new OnKeyListener() {
@Override
public boolean onKey(View arg0, int arg1, KeyEvent arg2) {
//Do something
return true;
}
});
Điều này có vẻ đơn giản như vậy nhưng tôi không thể làm việc đó. Bất kỳ đề xuất?
Sửa
tôi đã tìm kiếm một giải pháp cho một thời gian bây giờ và chỉ vài phút sau khi công bố này, tôi tìm thấy một giải pháp.
Về chủ đề này, tôi phát hiện ra đây không phải là một lỗi, nhưng nó thực sự là cố ý.
Android SearchView.OnQueryTextListener OnQueryTextSubmit not fired on empty query string
Vì vậy, tôi chỉ cần tải về ActionBarSherlock và thực hiện một số thay đổi cho onSubmitQuery phương pháp()
Từ
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if (query != null && TextUtils.getTrimmedLength(query) > 0) {
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
setImeVisibility(false);
}
dismissSuggestions();
}
}
}
Và phiên bản sửa đổi
private void onSubmitQuery() {
CharSequence query = mQueryTextView.getText();
if(query == null) {query = "";}
if (mOnQueryChangeListener == null
|| !mOnQueryChangeListener.onQueryTextSubmit(query.toString())) {
if (mSearchable != null) {
launchQuerySearch(KeyEvent.KEYCODE_UNKNOWN, null, query.toString());
setImeVisibility(false);
}
dismissSuggestions();
}
}
Hope this helps nếu có ai khác có pr này oblem.
Thay vì chỉnh sửa câu hỏi ban đầu, bạn có thể trả lời câu hỏi của riêng mình. – theblang