Đây là cách để điều hướng thông qua các ứng dụng của tôi:Fragment thay thế gây nên onQueryTextChange trên SearchView
- mở mảnh với danh sách danh sách
- Lọc theo một văn bản nhập vào SearchView
- Tap trên listitem (liệt kê đoạn được thay thế bởi mảnh chi tiết)
- Navigate lại (đoạn chi tiết được thay thế bằng danh sách fragment)
Khi tôi Navi từ danh sách đến từng chi tiết, tôi muốn giữ bộ lọc hiện tại của chế độ xem tìm kiếm trong biến chuỗi. Tôi lưu trữ giá trị của searchview khi onQueryTextChange được thực hiện.
Vấn đề: Tôi không thể lưu trữ giá trị bộ lọc thực tế vì onQueryTextChange được gọi khi tôi điều hướng từ danh sách đến chi tiết vì đã xóa nội dung của chế độ xem tìm kiếm.
// ...
searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
@Override
public boolean onQueryTextSubmit(String s) {
return false;
}
@Override
public boolean onQueryTextChange(String s) {
searchReceived(s);
return true;
}
});
// ...
public void searchReceived(String searchQuery)
{
this.stateHolder.searchQuery = searchQuery;
// more code...
}
Khi tôi muốn khôi phục bộ lọc khi điều hướng trở lại, nó chỉ lọc với một chuỗi rỗng vì giá trị sai đã được lưu trữ trong this.stateHolder.searchQuery
.
Stack:
onQueryTextChange():139, EmployeeListFragment$1 {com.example.exampleapp.fragment}
onTextChanged():1153, SearchView {android.widget}
access$2000():92, SearchView {android.widget}
onTextChanged():1638, SearchView$11 {android.widget}
sendOnTextChanged():7408, TextView {android.widget}
setText():3816, TextView {android.widget}
setText():3671, TextView {android.widget}
setText():80, EditText {android.widget}
setText():3646, TextView {android.widget}
setQuery():511, SearchView {android.widget}
onActionViewCollapsed():1250, SearchView {android.widget}
collapseItemActionView():1662, ActionBarView$ExpandedActionViewMenuPresenter {com.android.internal.widget}
collapseItemActionView():1258, MenuBuilder {com.android.internal.view.menu}
clear():521, MenuBuilder {com.android.internal.view.menu}
doInvalidatePanelMenu():789, PhoneWindow {com.android.internal.policy.impl}
run():221, PhoneWindow$1 {com.android.internal.policy.impl}
Làm thế nào tôi có thể ngăn chặn sự SearchView khỏi bị xóa bởi hệ thống khi điều hướng?
Cảm ơn.
Bạn có tìm thấy giải pháp nào cho vấn đề này không? – starrystar
@starrystar Tôi đã đăng giải pháp có thể có tại đây: https://stackoverflow.com/questions/23544382/fragment-replacement-triggers-onquerytextchange-on-searchview#23558681 – Tom