Вот как я перемещаюсь по своему приложению:
- Открыть фрагмент со списком
- Список фильтров по тексту, введенному в searchview
- Нажмите на listitem (фрагмент списка заменяется фрагментом детали)
- Переход назад (фрагмент детали заменяется фрагментом списка)
Когда я перемещаюсь из списка в фрагмент детали, я хочу сохранить текущий фильтр searchview в строковой переменной. Я сохраняю значение searchview, когда выполняется onQueryTextChange.
Проблема: Я не могу сохранить фактическое значение фильтра, потому что onQueryTextChange вызывается, когда я перемещаюсь из списка в детали, потому что что-то очистило текст searchview.
// ...
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...
}
Когда я хочу восстановить фильтр при навигации назад, он просто фильтрует пустую строку, потому что неправильное значение сохраняется в this.stateHolder.searchQuery
.
Стек:
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}
Как я могу предотвратить очистку системы поиска при навигации?
Спасибо.