У мене є деякі фрагменти, які потрібно показувати звичайним діалогом. У цих діалогових вікнах користувач може вибрати відповідь «так / ні», і тоді фрагмент повинен вести себе відповідно.
Тепер у Fragmentкласу немає onCreateDialog()способу перевизначення, тому я думаю, що мені доведеться реалізувати діалоги зовні, що містять Activity. Це нормально, але тоді Activityпотрібно якось повідомити про вибраний відповідь фрагменту. Я, звичайно, міг би використовувати тут шаблон зворотного виклику, тому фрагмент реєструється уActivity в класі слухача, і Діяльність повідомляє про відповідь через це чи щось подібне.
Але це здається досить великим безладом для простого завдання, як відображення у простому фрагменті "простого" так-ні. Також таким чином мійFragment би був менш самостійним.
Чи є чистіший спосіб зробити це?
Редагувати:
Відповідь на це питання насправді не пояснює детально, як слід використовувати DialogFragments для відображення діалогів із фрагментів. Тож AFAIK, шлях:
- Відобразити фрагмент.
- За потреби інстанціюйте діалоговий фрагмент.
- Встановіть оригінальний фрагмент як ціль цього діалогового фрагмента, за допомогою
.setTargetFragment(). - Покажіть DialogFragment з .show () з оригінального фрагмента.
- Коли користувач вибере якусь опцію цього діалогового фрагмента, сповістить про цей вибір вихідний фрагмент (наприклад, користувач натиснув "так"), ви можете отримати посилання на вихідний фрагмент за допомогою .getTarget ().
- Відхиліть діалоговий фрагмент.