在android中切换选项卡时隐藏键盘

Rav*_*dav 2 android android-softkeyboard android-fragments android-tabs

我用自定义类创建了标签条,我在每个标签中显示一个片段.键盘打开后我切换到Tab键,然后第二个片段被调用,但键盘没有隐藏.

我在两个片段中使用onCreateView()中的代码,但它不起作用:

//To Hide Soft 
getActivity().getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
Run Code Online (Sandbox Code Playgroud)

Mar*_*van 7

使用该代码的问题onCreateView()是,只要在父片段/活动中创建选项卡,就会创建在选项卡中初始化的片段.我做了标签中的片段的行为的一些调查,并意识到你有同样的问题,压倒一切的许多生命周期方法,如onViewCreated(),onResume()

我发现解决这个问题的最佳方法是setUserVisibleHint(boolean isVisibleToUser)在片段中覆盖您希望隐藏键盘的位置.只要片段的可见性发生变化,就会调用此方法.

@Override
    public void setUserVisibleHint(boolean isVisibleToUser) {
        super.setUserVisibleHint(isVisibleToUser);
        if (isVisibleToUser) {
            try {
                InputMethodManager mImm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
                mImm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
                mImm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
            } catch (Exception e) {
                Log.e(TAG, "setUserVisibleHint: ", e);
            }
        }
    }
Run Code Online (Sandbox Code Playgroud)