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