Android 使用带工具栏的SearchView,如何在加载活动时打开键盘?

Android 使用带工具栏的SearchView,如何在加载活动时打开键盘?,android,searchview,Android,Searchview,我尝试了stackoverflow中提供的其他可能的答案,但没有一个有效,因此我再次将其发布在这里。 问题是我想在活动打开时自动打开软键盘,但我尝试的方法都不起作用 我正在设置的活动代码SearchView: @Override public boolean onCreateOptionsMenu(Menu menu) { getMenuInflater().inflate(R.menu.search, menu); MenuItem searchItem = menu.find

我尝试了stackoverflow中提供的其他可能的答案,但没有一个有效,因此我再次将其发布在这里。 问题是我想在
活动
打开时自动打开软键盘,但我尝试的方法都不起作用

我正在设置的活动代码
SearchView

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.search, menu);
    MenuItem searchItem = menu.findItem(R.id.action_search);

    SearchManager searchManager = (SearchManager) SelectCityActivity.this.getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = null;
    if (searchItem != null) {
        searchView = (SearchView) searchItem.getActionView();
    }

    if (searchView != null) {
        searchView.setSearchableInfo(searchManager.getSearchableInfo(SelectCityActivity.this.getComponentName()));
        searchView.setInputType(InputType.TYPE_CLASS_TEXT | InputType.TYPE_TEXT_FLAG_CAP_SENTENCES);
        searchView.setQueryHint(searchHint);
        searchView.setIconifiedByDefault(false);
        final SearchView finalSearchView = searchView;
        searchView.setOnQueryTextFocusChangeListener(new View.OnFocusChangeListener() {
            @Override
            public void onFocusChange(View view, boolean hasFocus) {
                if (hasFocus) {
                    showInputMethod(view);
                    finalSearchView.onActionViewExpanded();
                }
            }
        });
        searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
            @Override
            public boolean onQueryTextSubmit(String query) {
                return true;
            }

            @Override
            public boolean onQueryTextChange(String s) {
                valueAdapter.getFilter().filter(Methods.capitalize(s));
                return true;
            }
        });
    }
    return true;
}
和菜单xml文件:

<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="@android:drawable/ic_menu_search"
    android:title="@string/action_search"
    app:actionViewClass="android.support.v7.widget.SearchView"
    app:showAsAction="always" />

</menu>

在创建活动的上放置以下代码:

((InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

希望这将对您有所帮助。

在创建活动时输入以下代码:

((InputMethodManager)this.getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

希望这对您有所帮助。

只需在代码中调用这一行即可

searchView.requestFocus();

就这样。

只需在代码中调用这一行即可

searchView.requestFocus();

就是这样。

尝试此操作以强制打开软键盘:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

尝试此操作以强制打开软键盘:

((InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE)).toggleSoftInput(InputMethodManager.SHOW_FORCED, InputMethodManager.HIDE_IMPLICIT_ONLY);

您尝试过requestFocus吗?谢谢,requestFocus正在工作:b但对我有效的答案只是调用requestFocus(),我没有在您使用actionbar执行操作的地方尝试该答案。我会将其编辑为您尝试过requestFocus吗?谢谢,requestFocus正在工作:b但对我有效的答案只是调用requestFocus(),我没有在你使用actionbar做某些事情的地方尝试这个答案。我会将其编辑为that@SoH你想说什么?很抱歉这么说。我想写的是,它本身不起作用。对我来说,如果我还添加以下内容,它就起作用:SearchTransactionSearchView.Isiconfied=false@SoH你想说什么?很抱歉这么说。它本身不起作用,这正是我想写的。对我来说,如果我还添加以下内容,它就会起作用:SearchTransactionSearchView.Isiconfied=false