Как скрыть экранную клавиатуру, когда DialogFragment отменен событием setCanceledOnTouchOutside

Если текст редактирования в настоящее время находится в фокусе, и пользователь щелкает за пределами DialogFragment; Я хочу, чтобы исчезла экранная клавиатура. Я могу заставить его работать, когда DialogFragment отклоняется следующим образом:

InputMethodManager imm;
public View onCreateView(LayoutInflater inflator, ViewGroup container,
        Bundle savedInstanceState) {
imm = (InputMethodManager)getActivity().getSystemService(Activity.INPUT_METHOD_SERVICE);
...}

@Override 
public void dismiss(){
    imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
    super.dismiss();
}

Однако, если я попробую то же самое для случая, когда он отменяется касанием за пределами фрагмента диалога, он не будет работать. Я пытаюсь сделать это, переопределив onCancel следующим образом:

@Override
public void onCancel(DialogInterface dialog){
    imm.hideSoftInputFromWindow(getView().getWindowToken(), 0);
    super.onCancel(dialog);
}

Функция вызывается, когда происходит событие внешнего прикосновения, но клавиатура не удаляется.

Ответы на вопрос(4)

Ваш ответ на вопрос