在片段中隐藏键盘

时间:2015-06-17 16:43:30

标签: android keyboard

在尝试将键盘隐藏在活动中的片段内时,我遇到了这些错误:

  

错误:无法解析getSystemService

     

无法解析上下文

     

无法解析getCurrentFocus()

 InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
 inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
 InputMethodManager.HIDE_NOT_ALWAYS);

2 个答案:

答案 0 :(得分:10)

在片段中你应该使用getActivity(),

        InputMethodManager inputManager = (InputMethodManager)getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    inputManager.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(),
            InputMethodManager.HIDE_NOT_ALWAYS);

答案 1 :(得分:0)

老实说,我从来没有碰过碎片关闭键盘的运气。我不了解其背后的工程原理,但这是可行的方法。

MainActivity-

public void closeKeyboard() {
    View view = this.getCurrentFocus();
    if (view != null) {
        InputMethodManager imm = (InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
}

片段

private void closeKeyboard() {
    MainActivity mainActivity = (MainActivity) getActivity();
    mainActivity.closeKeyboard();

}

然后只需在片段中的任意位置调用方法closeKeyboard()