我使用这种方法隐藏键盘。
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(INPUT_METHOD_SERVICE);
View v = getActivity().getWindow().peekDecorView();
if (null != v) {
imm.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
但是有时它会抛出NullPointerException,并且键盘没有隐藏。
sync device with java.util.concurrent.CompletionException: java.lang.NullPointerException: Attempt to invoke virtual method 'java.lang.Object androidx.fragment.app.FragmentActivity.getSystemService(java.lang.String)' on a null object reference
我已经通过覆盖方法onAttach保存了活动实例,并使用
activity.getSystemService(INPUT_METHOD_SERVICE);
但它不起作用。
答案 0 :(得分:0)
尝试这些代码,希望对您有所帮助。
显示软键盘:
public void showSoftKeyboard(View view){
if(view.requestFocus()){
InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
imm.showSoftInput(view,InputMethodManager.SHOW_IMPLICIT);
}
您可以使用InputMethodManager
强制Android隐藏虚拟键盘,调用hideSoftInputFromWindow
,传入包含您的编辑字段的窗口令牌。
public void hideSoftKeyboard(View view){
InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}
来自片段或活动。编码愉快
答案 1 :(得分:0)
要隐藏键盘,您可以尝试: 注意:要获取getSystemService,您需要先进行活动。
public static void hideSoftKeyboard(Activity activity) {
if (activity != null && activity.getWindow() != null) {
InputMethodManager imm = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
if (imm != null) {
imm.hideSoftInputFromWindow(activity.getWindow().getDecorView().getWindowToken(), 0);
}
}
}