Dies ist, wie ich durch meinen App navigieren:Fragment Ersatz löst onQueryTextChange auf Suche
- öffnet Fragment mit Liste
- Filterliste durch einen Text in Suche eingegeben
- Tippen Sie auf listitem (Liste Fragment ersetzt wird von Detail-Fragment)
- Navigieren zurück (fragment Listen Fragment ersetzt wird)
Als ich NAVI Gatter von Liste zu Detailfragment, ich möchte den aktuellen Filter der Suchansicht in einer String-Variablen behalten. Ich speichere den Wert der Suchansicht, wenn onQueryTextChange ausgeführt wird. Das Problem: Ich kann den tatsächlichen Filterwert nicht speichern, da onQueryTextChange aufgerufen wird, wenn ich von Liste zu Detail navigiere, weil etwas den Text der Suchansicht gelöscht hat.
// ...
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...
}
Wenn ich die Filter wiederherstellen möge, wenn die Navigation zurück, es filtert nur mit einem leeren String, weil der falsche Wert in this.stateHolder.searchQuery
gespeichert wurde.
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}
Wie kann ich die Search verhindern, dass durch das System gelöscht werden, wenn die Navigation?
Danke.
Haben Sie eine Lösung für dieses Problem gefunden? – starrystar
@starystar Ich habe hier eine mögliche Problemumgehung gepostet: https://StackOverflow.com/Questions/23544382/fragment-replacement-triggers-onquerytextchange-on-searchview#23558681 – Tom