在尝试将键盘隐藏在活动中的片段内时,我遇到了这些错误:
错误:无法解析getSystemService
无法解析上下文
无法解析getCurrentFocus()
InputMethodManager inputManager = (InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
答案 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()