如果 setIconifiedByDefault 为 false,则从另一个意图返回时弹出键盘

Keyboard pop up when back from another intent if setIconifiedByDefault is false

大家好。当我有意从 Fragment 1 打开 Activity 2 并按回 Activity 2 时,如果在 Fragment 1 的 actionBar 中创建 searchView 时 setIconifiedByDefault 为 false,我的键盘会自动弹出。我试图删除searchView.setIconifiedByDefault(false);。一切正常(当我在 Activity 2 中按回时没有弹出任何内容)但我无法获得我想要的确切布局。有什么避免弹出键盘的建议吗?

在 Fragment 1 中,我使用以下代码在 actionBar 中创建 searchView

@Override
public void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setHasOptionsMenu(true);
}

@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
    // Inflate the options menu from XML
    inflater.inflate(R.menu.homesearchbar, menu);
    super.onCreateOptionsMenu(menu,inflater);

    SearchManager searchManager = (SearchManager) getActivity().getSystemService(Context.SEARCH_SERVICE);
    SearchView searchView = (SearchView) menu.findItem(R.id.action_search).getActionView();
    searchView.setMaxWidth(Integer.MAX_VALUE);
    searchView.setIconifiedByDefault(false);
    searchView.setOnQueryTextListener(new SearchView.OnQueryTextListener() {
        @Override
        public boolean onQueryTextSubmit(String query) { return false; }
        @Override
        public boolean onQueryTextChange(String newText) { return false; }
    });
}

编辑 - 主页搜索栏

<?xml version="1.0" encoding="utf-8"?>
<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:title=""
        app:actionViewClass="android.support.v7.widget.SearchView"
        app:showAsAction="always"/>

</menu>

如果你想隐藏你的键盘状态,那么你应该在你的 onResume() 方法中输入这个: 发生这种情况是因为你的文本字段总是在你开始或恢复你的 activity/fragment 时获得焦点.停止这种方式的方法如下:

@Override
public void onResume() {
    super.onResume();

InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(yourTextField.getWindowToken(), 0);

}

或者,如果您无法在 onResume 中获取搜索字段,请改用此方法:

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

另一种方法是在 activity 标签中声明 "stateHidden" 属性 在你的清单中。

您还可以在您的片段 1 中为 searchViewsetFocusable(true) 设置 setFocusable(false)。这样它就不会占据焦点。以及所有功劳都归功于你。