Как отключить DialogFragment при нажатии вне диалогового окна?
Вопрос
Я использую DialogFragment
, и хотя я успешно настроил изображение на закрытие (т. е.закрыть) диалоговое окно при нажатии, мне трудно найти способ закрыть диалоговое окно, когда пользователь нажимает в любом месте за его пределами, точно так же, как это работает с обычными диалоговыми окнами.Я думал, что там будет что-то вроде
dialogFragment.setCanceledOnTouchOutside(true);
позвоните, но я не вижу этого в документации.
Возможно ли это с DialogFragment
вообще?Или я ищу не в тех местах?Я пытался перехватывать события касания в "родительском" действии, но, помимо того, что я не получал никаких событий касания, это казалось мне неправильным.
Решение
Должен вызываться в коде onCreateView
(как указал Апурв Гупта).
Другие советы
Здесь много ответов, но при открытии диалогового окна происходит сбой приложения.Написание getDialog().setCanceledOnTouchOutside(true);
внутри onCreateView
не сработало и привело к сбою моего приложения.
(Я использую AppCompatActivity
как моя базовая активность и android.app.DialogFragment
как мой фрагмент).
Работает любая из двух следующих строк:
getDialog().setCanceledOnTouchOutside(истина);
или
this.getDialog().setCanceledOnTouchOutside(истина);
внутри onActivityCreated
Нравится
@Override
public void onActivityCreated(Bundle savedInstanceState) {
super.onActivityCreated(savedInstanceState);
//getDialog().getWindow().getAttributes().windowAnimations = R.style.DialogAnimationZoom;
//getDialog().getWindow().setDimAmount(0.85f);
getDialog().setCanceledOnTouchOutside(true);//See here is the code
}
Что не следует использовать:
DialogFragment.getDialog().setCanceledOnTouchOutside(ложь);
выдает следующую ошибку
И написание кода на onCreateView
сбой приложения!Пожалуйста, обновите ответ, если вы обнаружите что-то неправильное.
Опечатка.У меня такая же проблема.Это отлично работает для Java и Mono для Android. Mono будет:
родовое словоЯ бы рекомендовал использовать свое решение только после того, как опробовал вышеуказанные решения.Я описал свое решение здесь .Вкратце, я проверяю границы касания DialogFragment.getView ().Когда точки касания находятся за пределами DialogFragment, я закрываю диалог.
Работал на меня
Мой код