как спрятать клавиатуру, открытую через showSoftInput

381
11 января 2017, 00:54

в одном из активити открывается клавиатура таким образом:

        InputMethodManager imm = (InputMethodManager) getActivity().getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(getCurrentFocus(), InputMethodManager.SHOW_FORCED);

В методaх onStop и onPause пытаюсь ее закрыть, чтобы при возврате к другому активити она спряталась. Закрываю так:

        InputMethodManager imm = (InputMethodManager) (getSystemService(Context.INPUT_METHOD_SERVICE));
    imm.hideSoftInputFromWindow(getCurrentFocus().getWindowToken(), InputMethodManager.HIDE_IMPLICIT_ONLY);

Но она не закрывается. Где ошибка?

Answer 1

Я гашу софт клавиатуру так:

public void hideKeyboard() {
        InputMethodManager imm = (InputMethodManager) this.getSystemService(Activity.INPUT_METHOD_SERVICE);
        //Find the currently focused view, so we can grab the correct window token from it.
        View view = this.getCurrentFocus();
        //If no view currently has focus, create a new one, just so we can grab a window token from it
        if (view == null) {
            view = new View(this);
        }
        imm.hideSoftInputFromWindow(view.getWindowToken(), 0);
    }
Answer 2

Состояние клавиатуры определяется для каждой активити отдельно.
Т.е. не нужно ее прятать в onStop или в onPause для следующей активити.
Укажите в манифесте атрибут для тэга activity

android:windowSoftInputMode="stateHidden"

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

Как вариант программного решения

getWindow().setSoftInputMode(WindowManager.LayoutParams.SOFT_INPUT_STATE_HIDDEN)‌​;
READ ALSO
Android поддержка epg

Android поддержка epg

ЗдравстуйтеНеобходимо в программе реализовать возможность просмотра тв программы в epg виде

321
Unchecked cast в generic методе

Unchecked cast в generic методе

Я хочу сделать универсальную фабрику для DAO-классов, чтобы при добавлении не приходилось писать новый метод "getNewEntityDao"Мне подсказали как правильно...

354
Hibernate many to many query not equal

Hibernate many to many query not equal

При таком запросе:

296