Android 如何在片段中隐藏键盘?;

Android 如何在片段中隐藏键盘?;,android,keyboard,fragment,Android,Keyboard,Fragment,我使用此方法隐藏键盘 InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(INPUT_METHOD_SERVICE); View v = getActivity().getWindow().peekDecorView(); if (null != v) { imm.hideSoftInputFromWindow(v.getWindowToken(), 0); } 但有时它会抛出Null

我使用此方法隐藏键盘

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);

但是它不起作用。

试试这一串代码,希望能有所帮助

要显示软键盘,请执行以下操作:

public void showSoftKeyboard(View view){
if(view.requestFocus()){
    InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(view,InputMethodManager.SHOW_IMPLICIT);
}
您可以使用
InputMethodManager
,调用
hideSoftInputFromWindow
,传递包含编辑字段的窗口标记,强制Android隐藏虚拟键盘

public void hideSoftKeyboard(View view){
  InputMethodManager imm =(InputMethodManager)getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(view.getWindowToken(), 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);
        }
    }

}

重复问题您是否尝试使用onActivityCreated方法?