通过按下没有焦点的searchview打开新活动,并在返回上一个活动时弹出键盘

时间:2019-02-25 16:12:00

标签: java android searchview

我花了很多天,但无法克服这样的挑战:我要在从主活动中按下searchview图标后打开搜索活动,但又无法获得焦点,而是不能通过后退返回主活动来弹出键盘。 主要活动和搜索活动都包含工具栏和搜索菜单。详细地,它们的代码如下:

主要活动菜单

<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 :(得分:0)

使用此行来防止键盘出现在您的活动中。

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