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