Obecnie tworzę aplikację na Androida i chcę przekazać datę między działaniem a fragmentem. Moja aktywność posiada przycisk, który otwiera fragment: DatePickerFragment.
W swojej działalności pokazuję datę, którą chcę zmodyfikować fragmentem. Chcę więc przekazać datę selektorowi daty i odesłać ją do ćwiczenia.
Wypróbowałem wiele rozwiązań, ale żadne nie działa. Prostym sposobem byłoby przekazanie argumentu, ale nie można tego zrobić z fragmentami.
android
android-fragments
android-activity
Eugene Primako
źródło
źródło
Odpowiedzi:
Aby przekazać informacje do fragmentu , należy ustawić Argumenty podczas jego tworzenia i można później pobrać ten argument metodą onCreate lub onCreateView swojego fragmentu.
W funkcji newInstance twojego fragmentu dodajesz argumenty, które chcesz do niego wysłać:
Następnie wewnątrz fragmentu metody
onCreate
lubonCreateView
możesz pobrać argumenty w ten sposób:Jeśli chcesz teraz komunikować się ze swoim fragmentem ze swoją aktywnością (wysyłając lub nie dane) , musisz użyć interfejsów. Sposób, w jaki możesz to zrobić, jest naprawdę dobrze wyjaśniony w samouczku dokumentacji komunikacji między fragmentami. Ponieważ wszystkie fragmenty komunikują się między sobą za pośrednictwem działania, w tym samouczku możesz zobaczyć, jak możesz wysłać dane z rzeczywistego fragmentu do jego kontenera działania, aby użyć tych danych w działaniu lub wysłać je do innego fragmentu, który zawiera działanie.
Samouczek dokumentacji:
http://developer.android.com/training/basics/fragments/communicating.html
źródło
Wysyłanie danych z
Activity
doFragment
Czynność:
Fragment:
Odczytywanie wartości we fragmencie
Ale jeśli chcesz wysłać wartości z fragmentu do działania, przeczytaj odpowiedź jpardogo, potrzebujesz interfejsów, więcej informacji: Komunikacja z innymi fragmentami
źródło
Parcelable
ale to dało miclass cast exception
dzięki @ ρяσѕρєя K i Terry ... bardzo mi to pomaga i działa doskonale
Z Aktywności wysyłasz dane z zamiarem:
oraz w metodzie Fragment onCreateView:
odniesienie: Wyślij dane z aktywności do fragmentu w systemie Android
źródło
Użyj biblioteki EventBus, aby przekazać zdarzenie, które może zawierać zmienną, w tę iz powrotem. To dobre rozwiązanie, ponieważ pozwala na luźne powiązanie twoich działań i fragmentów
https://github.com/greenrobot/EventBus
źródło
Dla wszystkich programistów Kotlin:
Oto proponowane rozwiązanie Android Studio do wysyłania danych do Twojego fragmentu (= podczas tworzenia pustego fragmentu za pomocą polecenia Plik -> Nowy -> Fragment -> Fragment (pusty) i zaznaczania opcji „dołącz metody fabryki fragmentów”).
Umieść to w swoim fragmencie:
.apply
to fajna sztuczka do ustawiania danych podczas tworzenia obiektu, lub jak to tutaj stwierdzają :Następnie w swojej aktywności lub fragmencie wykonaj:
i przeczytaj Argumenty w swoim fragmencie, takie jak:
Aby „wysłać” dane z powrotem do swojego działania , po prostu zdefiniuj funkcję w swoim działaniu i wykonaj następujące czynności w swoim fragmencie:
Ciesz się magią Kotlina!
źródło
Wysyłanie danych z działania do fragmentów połączonych przez XML
Jeśli utworzysz fragment w Android Studio za pomocą jednego z szablonów, np. Plik> Nowy> Fragment> Fragment (Lista), to fragment ten jest linkowany przez XML. Metoda newInstance jest tworzona we fragmencie, ale nigdy nie jest wywoływana, więc nie można jej używać do przekazywania argumentów.
Zamiast tego w Activity zastąp metodę onAttachFragment
Następnie przeczytaj argumenty we fragmencie metody onCreate zgodnie z innymi odpowiedziami
źródło
Możesz po prostu utworzyć instancję fragmentu za pomocą pakietu:
źródło