Как отключить DialogFragment при нажатии вне диалогового окна?

StackOverflow https://stackoverflow.com/questions/8404140

  •  28-10-2019
  •  | 
  •  

Вопрос

Я использую 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(ложь);

выдает следующую ошибку

enter image description here

И написание кода на onCreateView сбой приложения!Пожалуйста, обновите ответ, если вы обнаружите что-то неправильное.

родовое слово

Опечатка.У меня такая же проблема.Это отлично работает для Java и Mono для Android. Mono будет:

родовое слово

Я бы рекомендовал использовать свое решение только после того, как опробовал вышеуказанные решения.Я описал свое решение здесь .Вкратце, я проверяю границы касания DialogFragment.getView ().Когда точки касания находятся за пределами DialogFragment, я закрываю диалог.

родовое слово

Работал на меня
Мой код

родовое слово
Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top