Открытие нового действия, нажав SearchView без фокуса и всплывающей клавиатуры при возврате предыдущего действия - PullRequest
0 голосов
/ 25 февраля 2019

Я провел много дней, но не могу преодолеть проблему, в которой я хочу открыть поисковое действие после нажатия значка поиска в главном упражнении, но не получаю фокуса и выскакиваю на клавиатуре, нажимая назад, чтобы вернуться к основному действию.Как основное, так и поисковое действие содержит панели инструментов и меню поиска.Детально код для них следующий:

меню основной деятельности

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto">
<item android:id="@+id/action_search"
    android:icon="@drawable/ic_search"
    android:title="Search"
    android:iconifiedByDefault="false"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="ifRoom|collapseActionView"/>
    <!--app:showAsAction="ifRoom|collapseActionView"-->

<item android:id="@+id/action_settings"
    android:title="Thu nghiem"/>

меню поисковой деятельности

<menu xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:app="http://schemas.android.com/apk/res-auto"
xmlns:tools="http://schemas.android.com/tools"
tools:context=".MainActivity">

<item android:id="@+id/search_action_search"
    android:icon="@drawable/ic_search"
    android:title="Search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="ifRoom|collapseActionView"/>

<item android:id="@+id/search_action_settings"
    android:title="Detail"/>

В основной деятельности я пытался

@Override
public boolean onCreateOptionsMenu(Menu menu){
    getMenuInflater().inflate(R.menu.example_menu, menu);
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setIconified(true);
    searchView.setFocusable(false);
    searchView.setFocusableInTouchMode(false);
    searchView.clearFocus();
    return true;

}

Кроме того, я пробовал несколько разных способов, но не смог добиться успеха.

1 Ответ

0 голосов
/ 25 февраля 2019

используйте эту строку для предотвращения появления клавиатуры в вашей деятельности.

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);
...