如何在片段中隐藏软键盘?

Abd*_*Ch. -1 android android-fragments

我想隐藏在android中的片段中的键盘.因为一旦它显示它仍然在所有片段中可见.我尝试这种方法

    public static void hideKeyboard(Context ctx) {
    InputMethodManager inputManager = (InputMethodManager) ctx
            .getSystemService(Context.INPUT_METHOD_SERVICE);

    // check if no view has focus:
    View v = ((Activity) ctx).getCurrentFocus();
    if (v == null)
        return;

    inputManager.hideSoftInputFromWindow(v.getWindowToken(), 0);
}
Run Code Online (Sandbox Code Playgroud)

并在按钮单击时调用此方法

signIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
                hideKeyboard(ctx);
                login();


        }
    });
Run Code Online (Sandbox Code Playgroud)

但这会给出错误"java.lang.NullPointerException:尝试在空对象引用上调用虚方法'java.lang.Object android.content.Context.getSystemService(java.lang.String)'"

Ani*_*har 5

试试这个

public static void hideSoftKeyboard(Activity activity) {
        if (activity.getCurrentFocus() == null) {
            return;
        }
        InputMethodManager inputMethodManager = (InputMethodManager) activity.getSystemService(Context.INPUT_METHOD_SERVICE);
        inputMethodManager.hideSoftInputFromWindow(activity.getCurrentFocus().getWindowToken(), 0);
    }
Run Code Online (Sandbox Code Playgroud)

调用这个只是从你的onclick按钮传递下面的代码

signIn.setOnClickListener(new View.OnClickListener() {
        @Override
        public void onClick(View v) {
               hideSoftKeyboard(getActivity());
                login();


        }
    });
Run Code Online (Sandbox Code Playgroud)