Как скрыть клавиатуру в фрагменте? - PullRequest
0 голосов
/ 11 октября 2019

Я использую этот метод, чтобы скрыть клавиатуру.

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

но это не работает.

Ответы [ 2 ]

0 голосов
/ 11 октября 2019

скрыть клавиатуру вы можете попробовать: note: чтобы получить 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);
        }
    }

}
0 голосов
/ 11 октября 2019

Попробуйте этот набор кода, надеюсь, он поможет.

Чтобы отобразить программную клавиатуру:

public void showSoftKeyboard(View view){
if(view.requestFocus()){
    InputMethodManager imm =(InputMethodManager) getSystemService(Context.INPUT_METHOD_SERVICE);
    imm.showSoftInput(view,InputMethodManager.SHOW_IMPLICIT);
}

Вы можете заставить Android скрывать виртуальную клавиатуру, используя InputMethodManager,вызывая hideSoftInputFromWindow, передавая токен окна, содержащего ваше поле редактирования.

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

Из фрагмента или действия. Счастливое кодирование

...