2016-04-19 10 views
1

Ich habe eine Aktivität mit einem ListView und klickbare Elemente, um Details von jedem von ihnen in einer separaten Aktivität anzuzeigen. Meine Hauptaktivität hat eine SearchView, um diese Elemente zu filtern. Ich möchte in der Lage sein, auf ein Element zu klicken (das Öffnen ist eine neue Aktivität) und wenn ich Zurück-Taste drücke, bleibt meine Suchansicht gleich (mit meiner gefilterten Liste).Persistieren Abfrage in SearchView nach dem Fortsetzen der Aktivität

implementiert ich meine Suche wie folgt aus:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    MenuInflater inflater = getMenuInflater(); 
    // Inflate menu to add items to action bar if it is present. 
    inflater.inflate(R.menu.menu_main, menu); 
    final MenuItem searchItem = menu.findItem(R.id.action_search); 
    mSearchView = (SearchView) searchItem.getActionView(); 
    mSearchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() { 
     @Override 
     public boolean onQueryTextSubmit(String query) { 
      Log.w("SEARCH", "SearchOnQueryTextSubmit: " + query); 
      mQuery = query; 
      if (!mSearchView.isIconified()) { 
       mSearchView.setIconified(true); 
      } 
      searchItem.collapseActionView(); 
      return false; 
     } 

     @Override 
     public boolean onQueryTextChange(String s) { 
      Log.w("SEARCH", "SearchOnQueryTextChanged: " + s); 
      mQuery = s; 
      contactAdapter.getFilter().filter(s); 

      return false; 
     } 
    }); 

Und ich versuchte, etwas in onResume oder auf dem gleichen onCreateOptionsMenu zu implementieren etwas zu überprüfen, ob mQuery hatte.

if (!TextUtils.isEmpty(mQuery)) { 
     final String thisQuery = mQuery; 
     mSearchView.post(new Runnable() { 
      @Override 
      public void run() { 
       Log.d(TAG, "onResume: setting mQuery to searchView"); 
       Log.d(TAG, "mQuery: "+thisQuery); 
       MenuItemCompat.expandActionView(searchItem); 
       mSearchView.setQuery(thisQuery, true); 
      } 
     }); 
    } 

Bei beiden Methoden versucht, aber ohne Erfolg. Auf onCreateOptionsMenu, wenn ich es debugg, SearchView wird mit meiner Abfrage zu filtern, aber direkt danach, ein anderer Aufruf kommt mit einer leeren Suche! Ich weiß nicht, woher das kommt.

Irgendwelche Hilfe? Vielen Dank!

+1

Überprüfen Sie die ausgewählte Antwort hier - es sieht so aus, als ob Sie das suchen. [Wie der vorherige Status einer Aktivität beibehalten wird] (http://stackoverflow.com/questions/9147981/wie-zur-erhalt-der-vorhergehenden-Status-der-Aktivität). – ishmaelMakitla

+0

Super !! Danke, schreibe es als Antwort, damit ich es richtig markieren kann. – Nacho

+0

Ich bin froh, dass der Vorschlag für Sie funktioniert hat - ich habe es als Antwort geschrieben, wie Sie es vorgeschlagen haben. – ishmaelMakitla

Antwort

Verwandte Themen