Ich habe einen zusammenklappbaren SearchView
in meinem ActionBar
. Nachdem eine Suche durchgeführt wurde, wird das zugehörige Objekt ListView
gefiltert, sodass nur übereinstimmende Elemente angezeigt werden. Während dieses Status ist die SearchView
noch erweitert und zeigt die Suchzeichenfolge. Wenn der Benutzer die SearchView
schließt, entferne ich den Filter.Gibt es eine bessere Möglichkeit, den Status von SearchView wiederherzustellen?
Ich möchte den Suchstatus wiederherstellen, z. bei Konfigurationsänderung oder wenn die Aktivität zerstört wurde, wenn ich von einer anderen Aktivität zu ihr zurückkehre.
ich zur Wiederherstellung des Abfrage-String in onRestoreInstanceState()
, und wenn ich einen Abfrage-String in onCreateOptionsMenu()
finden nenne ich
searchView.setQuery(query, true);
, um die Abfrage erneut auszuführen. Es stellte sich heraus, dass dies besser ist als die sofortige Anwendung des Abfragefilters onRestoreInstanceState()
. Bei letzterem wird die Liste ungefiltert angezeigt, erst dann wird die Abfrage erneut angewendet. Mit setQuery()
passiert das nicht.
Problem: Die Abfrage wird ausgeführt und die Liste wird gefiltert, aber die Suchansicht bleibt minimiert. Daher kann der Benutzer die Suchansicht nicht zum Entfernen des Filters oder zum Anwenden einer anderen Abfrage verwenden.
In onCreateOptionsMenu()
kann ich sicher sein, dass das Suchelement und die Suchansicht existiert, daher kann ich aufrufen. Seltsamerweise erweitert nur dies wirklich die ActionView
- Aufruf setIconified(false)
erweitert nicht die Ansicht, nicht einmal wenn es zweimal hintereinander aufgerufen wird.
Wenn ich expandActionView()
verwenden, bevor ich setQuery()
nennen, die SearchView
geöffnet und zeigt den Text (sonst expandActionView()
leert den SearchView
).
Leider hat expandActionView()
einen Nebeneffekt: die Vorschlagsliste wird ebenfalls angezeigt und die Tastatur öffnet sich.
Ich kann die Tastatur mit searchView.clearFocus()
verstecken. Das verbleibende Problem ist also die Vorschlagsliste. Wie kann ich eine geöffnete Vorschlagsliste auf einem SearchView
schließen, der Text hat?
Ich frage mich, ob es eine bessere Möglichkeit gibt, eine Suchansicht in der Aktionsleiste wiederherzustellen, die nicht so viele Nebenwirkungen hat.
siehe [dies] (http://stackoverflow.com/questions/15024892/two-searchviews-in-one-activity-and-screen-rotation) kann Ihnen helfen – user3355820
Dieser Fall unterscheidet sich darin, dass die Suche Die Ansicht ist in onRestoreInstanceState verfügbar. In meinem Fall ist die Suchansicht in der Aktionsleiste und nicht in onRestoreInstanceState verfügbar. – dschulten
Es scheint, dass expandActionView aus irgendeinem Grund bewirkt, dass die aktuelle Abfragezeichenfolge auf leer zurückgesetzt wird. Wenn ich zuerst die Aktionsansicht expandiere und dann setQuery aufruft, wird die Abfrage geöffnet und der Text angezeigt. Das verbleibende Problem besteht nun darin, dass die Vorschlagsliste angezeigt wird und die Tastatur geöffnet ist. – dschulten