Скрыть мягкую клавиатуру при действии без каких-либо операций с клавиатурой

У меня есть вкладка с одним активным за вкладку, и когда я переключаюсь с первой вкладки, которая имеет TextView, на вторую вкладку, которая отображает только доступный список, мягкая клавиатура все еще там. Я хочу, чтобы он ушел, поэтому я попробовал это:

public static void hideSoftKeyboard (Activity activity, View view) {
  InputMethodManager imm = (InputMethodManager)activity.getSystemService(Context.INPUT_METHOD_SERVICE);
  imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
}

но это не работает, потому что нет соответствующего представления для представления, так как на экране не отображается вид, который принимает ввод с клавиатуры. Любые предложения о том, как это решить?

Ответ 1

Попробуйте это в третьей строке вашего кода:

imm.hideSoftInputFromWindow(view.getApplicationWindowToken(), 0);

Ответ 3

Вы также можете попробовать

imm.toggleSoftInput(InputMethodManager.SHOW_FORCED,0 );

Ответ 4

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN);

Ответ 5

Этот метод может помочь вам скрыть клавиатуру любым способом. Это отлично работает для меня

public void hideKeyboard(Activity activity, View view) {
        if (activity != null ) {

            if(view != null)
            {
                try {
                    InputMethodManager imm = (InputMethodManager)this.getSystemService(Service.INPUT_METHOD_SERVICE);
                    imm.hideSoftInputFromWindow(view.getWindowToken(), 0); 
                } catch (Exception e) {
                    e.printStackTrace();
                }
            }else
            {
                activity.getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_ALWAYS_HIDDEN);
            }

        }
    }