Come distriggersre / chiudere / crollare SearchView in ActionBar in MainActivity?

Sto cercando di cancellare e chiudere SearchView dopo aver inserito un valore. Ho trovato una soluzione ma chiudo la ricerca e non eseguire alcuna azione se cerco di ricercare di nuovo.

@Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main_actions, menu); searchView = (SearchView) menu.findItem(R.id.action_search).getActionView(); searchView.setOnQueryTextListener(searchListener); return super.onCreateOptionsMenu(menu); } SearchView.OnQueryTextListener searchListener = new SearchView.OnQueryTextListener(){ @Override public boolean onQueryTextChange(String arg0) { return false; } @Override public boolean onQueryTextSubmit(String query) { new JsoupGetData("http://api.openweathermap.org/data/2.5/find?q="+ query + "&lang=pl").execute(); try { searchView.onActionViewCollapsed(); } catch(Exception ex){ ex.printStackTrace(); System.out.println(ex); } return true; } }; 

Posso cercare solo per la prima volta. Ogni volta successivamente chiude la mia tastiera di input e non fa nulla. Come può essere eseguita in modo corretto?

  • I colors Web in un file di risorse xml a colors Android
  • C'è un modo per sapere se un'attività è stata avviata con Espresso?
  • Disegnare Android EditText per mostrare il messaggio di errore come descritto da google
  • Android - Prova a submit sms falsi a me senza l'utilizzo della networking mobile
  • Qualsiasi modo di comunicare con WebView in Android?
  • Come faccio a aggiornare il layout di RecyclerView?
  • Modifica. La modifica suggerita è simile a questa:

      try { searchView.setIconified(true); } 

    activity_main_actions.xml:

      <!-- Search Widget --> <item android:id="@+id/action_search" android:icon="@drawable/ic_action_search" android:title="@string/action_search" android:showAsAction="always" android:actionViewClass="android.widget.SearchView"/> 

    Edit2:

    Ho cambiato showAsAction="always|collapseActionView" ma chiude la mia applicazione quando faccio clic sulla ricerca.

    Ho anche messo l'ascoltatore all'interno di OnCreateOptionsMenu per vedere se cambia qualcosa:

     @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main_actions, menu); searchMenuItem = menu.findItem(R.id.action_search); searchView = (SearchView) searchMenuItem.getActionView(); searchView.setOnQueryTextListener(new OnQueryTextListener(){ @Override public boolean onQueryTextChange(String arg0) { return false; } @Override public boolean onQueryTextSubmit(String query) { if (searchMenuItem != null) { boolean closed = searchMenuItem.collapseActionView(); Toast.makeText(getApplicationContext(), "closing: " + closed, Toast.LENGTH_SHORT).show(); } new JsoupGetData("http://api.openweathermap.org/data/2.5/find?q="+ query + "&lang=pl").execute(); return false; } }); return super.onCreateOptionsMenu(menu); } 

    E il boolean closed è false – non so perché. Ho letto il doc ma non mi dice niente.

    Edit3:

    Ho letto troppo Internet su questo argomento e non è ancora chiaro per me. Il widget di ricerca viene eliminato, la tastiera viene nascosta e viene eseguita un'azione. L'unico problema è che la ricerca non è crollata in modo da coprire il resto dei pulsanti di azione in ActionBar.

      @Override public boolean onQueryTextSubmit(String query) { searchView.setIconified(true); searchView.clearFocus(); new JsoupGetData("http://api.openweathermap.org/data/2.5/find?q="+ query + "&lang=pl").execute(); return false; } 

    Qui ho letto che il collassoActionView () non funziona, perché la mia ricerca non è una vista ma un widget.

  • Come aprire una seconda attività clic sul button nell'applicazione android
  • Come modificare il colore del text e la dimensione di un menu a comparsa in android?
  • Come recuperare le immagini dalla memory cache in picasso?
  • Il database non viene copiato dalla cartella di risorse al dispositivo
  • AlarmManager non funziona
  • doppio telefono sim android che sim riceve una chiamata
  • 6 Solutions collect form web for “Come distriggersre / chiudere / crollare SearchView in ActionBar in MainActivity?”

    Uso:

    searchMenuItem.collapseActionView();

    Invece di:

    searchView.onActionViewCollapsed();

    Se si utilizza la AppCompat library , utilizzare:

    MenuItemCompat.collapseActionView(searchMenuItem);

    Nel mio caso chiamando invalidateOptionsMenu(); chiude SearchView

    In menu_main.xml aggiungere:

     <item android:id="@+id/action_search" android:icon="@android:drawable/ic_menu_search" android:title="Search" app:showAsAction="collapseActionView|ifRoom" android:orderInCategory="1" app:actionViewClass="android.support.v7.widget.SearchView" android:menuCategory="secondary" /> 

    e in onCreateOptionsMenu

     final MenuItem miSearch = menu.findItem(R.id.action_search); SearchView searchView = (SearchView) miSearch.getActionView(); searchView.setQueryHint("Searh For"); searchView.setOnQueryTextListener(newSearchView.OnQueryTextListener() { @Override public boolean onQueryTextSubmit(String query) { Toast.makeText(context,query, Toast.LENGTH_LONG).show(); // Here Put Your Code. //searchView.onActionViewCollapsed(); miSearch.collapseActionView(); return false; } @Override public boolean onQueryTextChange(String newText) { return false; } }); 

    La soluzione menzionata qui è semplice e funziona perfettamente.

    Fondamentalmente, call setQuery("", false) e setIconified(true) su SearchView .

    Sembra che quello che stai cercando è un modo per chiudere la barra di ricerca in modo programmato. Purtroppo, per questo non esiste un metodo o una soluzione alternativa equivalente. Potresti aver già visto un altro post che ha qualche suggerimento, ma nessun modo reale per farlo.

    La tua prima modifica sopra quella che chiama setIconified(true) è la migliore alternativa. I documenti suggeriscono che call setIconified(true) dovrebbe crollare il widget di ricerca, cancellarla e rimuoverla da fuoco se l'attributo iconifiedByDefault è vero (che è per impostazione predefinita in modo da non vedere alcun problema con la tua attività_main_actions.xml).

    Ciao ho affrontato uno scenario simile e quindi penso che questo cambiato nel codice dovrebbe fare il trucco.
    Spero che questo ti aiuti…:)

     @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.activity_main_actions, menu); Menu mMenuItem = menu.findItem(R.id.action_search_loc); // take a reference with menue item searchView = (SearchView) mMenuItem.getActionView(); //use that to find searchview searchView.setOnQueryTextListener(searchListener); return super.onCreateOptionsMenu(menu); } SearchView.OnQueryTextListener searchListener = new SearchView.OnQueryTextListener(){ @Override public boolean onQueryTextChange(String arg0) { return false; } @Override public boolean onQueryTextSubmit(String query) { new JsoupGetData("http://api.openweathermap.org/data/2.5/find?q="+ query + "&lang=pl").execute(); try { mMenuItem.collapseActionView(); //this will collapse your search view } catch(Exception ex){ ex.printStackTrace(); System.out.println(ex); } return true; } }; 
    L'Android è un fan Android di Google, tutto su telefoni Android, Android Wear, Android Dev e applicazioni Android Games e così via.