Search code examples
androidandroid-fragmentsandroid-edittextandroid-softkeyboard

Dismiss Keyboard on button click that closes fragment


How do I close the keyboard on button click? I have a fragment which has an EditText and two buttons. One submits the EditText content, the other simply closes the fragment. Now when the fragment is gone, the keyboard stays. However, pressing the back button closes the keyboard or clicking on "done" also closes it. But what I need is the keyboard disappear when the fragment is closed.

I've tried solutions on similar questions here,here or here but none seems to work. Most of them throw a NullPointerException. All are for activities not fragments. The code for calling the keyboard works:

editText.requestFocus();
InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
        imm.showSoftInput(editText, InputMethodManager.SHOW_IMPLICIT);

However I had to add getActivity() to make it work.

Any help will be appreciated.


Solution

  • Use this method

    public void hideKeyboard() {
        // Check if no view has focus:
        View view = getActivity().getCurrentFocus();
        if (view != null) {
            InputMethodManager inputManager = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
            inputManager.hideSoftInputFromWindow(view.getWindowToken(), InputMethodManager.HIDE_NOT_ALWAYS);
        }
    }