Показать диалог из фрагмента?

У меня есть несколько фрагментов, которые должны показывать обычный диалог. В этих диалоговых окнах пользователь может выбрать ответ «да» / «нет», и тогда фрагмент должен вести себя соответствующим образом.

Теперь класс Fragment не имеет метода onCreateDialog () чтобы переопределить, поэтому я думаю, что мне нужно реализовать диалоги снаружи, в содержащем Activity . Это нормально, но тогда Activity должно каким-то образом сообщить фрагменту выбранный ответ. Я, конечно, мог бы использовать здесь шаблон обратного вызова, поэтому фрагмент регистрируется в Activity с классом слушателя, и Activity сообщит ответ через это или что-то в этом роде.

Но это кажется большим беспорядком для такой простой задачи, как отображение "простого" диалога да-нет во фрагменте. Также, таким образом мой фрагмент будет менее самодостаточным.

Есть ли более чистый способ сделать это?

Изменить:

Ответ на этот вопрос не объясняет подробно, как для отображения диалогов из фрагментов следует использовать DialogFragments. Итак, AFAIK, путь следующий:

  1. Показать фрагмент.
  2. При необходимости создайте экземпляр DialogFragment.
  3. Установите исходный фрагмент в качестве цели этого DialogFragment с помощью .setTargetFragment () .
  4. Показать DialogFragment с помощью .show () из исходного фрагмента.
  5. Когда пользователь выбирает какой-либо параметр в этом DialogFragment, уведомить исходный фрагмент об этом выборе (например, пользователь нажал «да»), вы можете получить ссылку на исходный фрагмент с помощью .getTarget ().
  6. Отклонить DialogFragment.
114
задан Shubham Soni 3 December 2017 в 17:53
поделиться