Mam kilka fragmentów, które muszą pokazywać zwykłe okno dialogowe. W tych oknach dialogowych użytkownik może wybrać odpowiedź tak / nie, a następnie fragment powinien odpowiednio się zachowywać.
Teraz Fragment
klasa nie ma onCreateDialog()
metody do przesłonięcia, więc myślę, że muszę zaimplementować okna dialogowe na zewnątrz, w pliku zawierającym Activity
. W porządku, ale potem Activity
trzeba jakoś zgłosić wybraną odpowiedź do fragmentu. Mógłbym oczywiście użyć tutaj wzorca wywołania zwrotnego, więc fragment rejestruje się w Activity
klasie słuchacza, a Activity zgłosi odpowiedź przez to lub coś w tym stylu.
Ale wydaje się, że to dość duży bałagan jak na proste zadanie, takie jak wyświetlanie „prostego” dialogu tak-nie we fragmencie. W ten sposób Fragment
byłbym mniej samowystarczalny.
Czy jest na to jakiś czystszy sposób?
Edytować:
Odpowiedź na to pytanie nie wyjaśnia szczegółowo, w jaki sposób należy używać DialogFragments do wyświetlania okien dialogowych z fragmentów. AFAIK, droga do zrobienia to:
- Wyświetl fragment.
- W razie potrzeby Utwórz wystąpienie DialogFragment.
- Ustaw oryginalny fragment jako obiekt docelowy tego DialogFragment za pomocą
.setTargetFragment()
. - Pokaż DialogFragment z .show () z oryginalnego fragmentu.
- Gdy użytkownik wybierze jakąś opcję w tym DialogFragment, powiadom oryginalny Fragment o tym wyborze (np. Użytkownik kliknął „tak”), możesz uzyskać referencję do oryginalnego fragmentu za pomocą .getTarget ().
- Odrzuć DialogFragment.