Как закрыть / закрыть / свернуть SearchView в ActionBar в MainActivity?

Я пытаюсь очистить и закрыть SearchView после ввода значения. Я нашел решение, но оно закрывает поиск и не выполняет никаких действий, если я пытаюсь выполнить поиск снова.

@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;
    }
};

Я могу искать только в первый раз. Каждый раз, когда он только закрывает мою клавиатуру ввода и ничего не делает. Как это можно сделать правильно?

Редактировать. Предлагаемое изменение выглядит следующим образом:

        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:

Я изменилсяshowAsAction="always|collapseActionView" но он закрывает мое приложение, когда я нажимаю на поиск.

Я также помещаю слушатель в OnCreateOptionsMenu, чтобы увидеть, если он что-то изменит:

@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);
}

Иclosed логическое значениеfalse - Я не знаю почему. Я читаюдокумент но это мне ничего не говорит.

Edit3:

Я прочитал слишком много интернета на эту тему, и мне пока не ясно. Виджет поиска очищен, клавиатура скрыта и действие выполнено. Единственная проблема заключается в том, что поиск не свернут, поэтому он охватывает остальные кнопки действий на панели действий.

            @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;
            }

Вот Я прочитал, что collapseActionView () не будет работать, потому что мой поиск - это не представление, а виджет.

Ответы на вопрос(6)

Ваш ответ на вопрос