У меня есть несколько фрагментов, которые нужно показать обычному диалогу. В этих диалогах пользователь может выбрать ответ да / нет, и тогда фрагмент должен вести себя соответствующим образом.
Теперь у Fragment
класса нет onCreateDialog()
метода для переопределения, поэтому я думаю, мне нужно реализовать диалоги снаружи, в содержащем Activity
. Ничего страшного, но тогда Activity
нужно как-то доложить выбранный ответ фрагменту. Я, конечно, мог бы использовать здесь шаблон обратного вызова, чтобы фрагмент регистрировался в Activity
классе слушателя, и Activity сообщало бы ответ через это или что-то в этом роде.
Но для такой простой задачи, как отображение «простого» диалога «да-нет» во фрагменте, это кажется большим беспорядком. Кроме того, таким образом my Fragment
будет менее замкнутым.
Есть ли более чистый способ сделать это?
Редактировать:
Ответ на этот вопрос не объясняет подробно, как следует использовать DialogFragments для отображения диалогов из фрагментов. Итак, AFAIK, путь:
- Показать фрагмент.
- При необходимости создайте экземпляр DialogFragment.
- Установите исходный фрагмент в качестве цели этого DialogFragment с помощью
.setTargetFragment()
. - Покажите DialogFragment с помощью .show () из исходного фрагмента.
- Когда пользователь выбирает какую-либо опцию в этом DialogFragment, уведомляет исходный фрагмент об этом выборе (например, пользователь нажал «да»), вы можете получить ссылку на исходный фрагмент с помощью .getTarget ().
- Закройте DialogFragment.