2017-11-14 4 views
0

Code erforderlich, um die searchView zu schließen, wenn BACK gedrückt wird. Bisher gibt es nur einen Code, der die Tastatur schließt, wenn BACK gedrückt wird.Wie man SearchView in onOptionsSelected (MenuItem Element) schließen, wenn onBackPressed nicht funktioniert?

enter image description here

@Override 
public boolean onOptionsItemSelected(MenuItem item) { 
    int id = item.getItemId(); 


    if (item.getItemId() == android.R.id.home) { 

     InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE); 
     View view = this.getCurrentFocus(); 
     if (view != null) { 
      imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
     } 
    } 
    return super.onOptionsItemSelected(item); 
    } 

habe ich versucht, die folgende Zeile, aber diese Linie schließt die gesamte App aus irgendeinem Grund, wenn „zurück“ auf ...

onBackPressed(); 
geklickt

Die folgende Zeile ist veraltet .. .

Ich habe einige Antworten auf StackOverflow gesehen, aber die meisten von ihnen haben t o mit onBackPressed() oder searchView.collapseActionView() hinzufügen. Aber ich kann nicht Suche in onOptionsItemSelected(MenuItem item) hinzufügen, wenn ich es mit SearchView searchView = (SearchView) item.getActionView(); neu deklarieren und dann searchView.collapseActionView() hinzufügen, aber dann die App stürzt ab, wenn BACK gedrückt.

bekam ich die Tastatur zu schließen, aber wie schließe ich das Suche in onOptionsItemSelected(MenuItem item)?

EDIT:

Wenn ich onBackPressed() verwenden oder super.onBackPressed() oder this.onBackPressed(), das erste Mal, dass ich auf klicken Sie auf „Zurück“ -Taste, Search und Tastatur schließen, aber wenn ich auf der Suche Icon klicken Sie erneut Suche und Tastatur zu öffnen taucht auf, wenn ich wieder auf "Zurück" klicke, schließt sich die gesamte App, stürzt nicht ab, schließt einfach und bringt mich auf den Android-Phone-Startbildschirm. Warum passiert dies?

Antwort

0

aktualisieren

@Override 
    public void onBackPressed() { 
     if (!yourSearhView.isIconified()) { 
      yourSearhView.onActionViewCollapsed(); 
     } else { 
      super.onBackPressed(); 
     } 
    } 

Das wird nicht funktionieren, wenn die Sie app gesetzt haben: showAsAction = "always"

+0

Dieser Code für mich nicht funktioniert. – iBEK

+0

Überprüfen Sie meine aktualisierte Antwort – diegoveloper

+0

Dieser Code funktioniert nicht für mich, ich habe es auf StackOverflow gesehen. – iBEK

Verwandte Themen