private void hideKeyboard() {
try {
// Close Soft Keyboard
InputMethodManager inputManager = (InputMethodManager)
mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(rootView.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
} catch (Exception keyboardHideExp) {
Log.d("eEmp/HideKbExp", "Exception raised due to " + keyboardHideExp.toString());
}
}
这用于fragment
。我需要在class
中使用相同的方法,但在rootView
给出错误。如何在我的class
中访问。
inputManager.hideSoftInputFromWindow(rootView.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
我是android新手。
任何帮助都将不胜感激。
答案 0 :(得分:1)
试试这段代码。
Context mcontext;
View rootView;
classConstructor(Context context, View view){
this.mcontext = context;
this.rootView = view;
}
private void hideKeyboard()
{
try {
// Close Soft Keyboard
InputMethodManager inputManager = (InputMethodManager)
mContext.getSystemService(Context.INPUT_METHOD_SERVICE);
inputManager.hideSoftInputFromWindow(rootView.getWindowToken(),
InputMethodManager.HIDE_NOT_ALWAYS);
} catch (Exception keyboardHideExp) {
Log.d("eEmp/HideKbExp", "Exception raised due to " + keyboardHideExp.toString());
}
}
答案 1 :(得分:0)
您需要父View
。您的方法如何获得rootView
变量?
最简单的方法是:
在 YourClass.class
中public void closeKeyboard(Context context, View view) {
InputMethodManager inputMethodManager =(InputMethodManager)context.getSystemService(Activity.INPUT_METHOD_SERVICE);
inputMethodManager.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
或者代替view.getWindowToken()
使用context.getCurrentFocus().getWindowToken()
。
在 YourActivity.class
中EditText editText = findViewById(R.id.my_edit_text);
new YourClass().closeKeyboard(this, editText);
EditText应该处于活动/片段布局中。
答案 2 :(得分:0)
您可以在使用Fragment
时使用此功能。
private void hideKeyBoard() {
if (getActivity().getCurrentFocus() != null) {
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(getActivity().getCurrentFocus().getWindowToken(), 0);
}
}
这对我有用......