Może ktoś mi pomóc wiedzieć o Bundle savedInstanceState
w onCreate(Bundle savedInstanceState)
Jestem newbie w Androidzie. Próbuję to zrozumieć z developer.android.com. Ale nie jestem w stanie tego zrozumieć. Czy ktoś może to uprościć?
124
Odpowiedzi:
Jeśli zapiszesz stan aplikacji w pakiecie (zwykle nietrwałe, dynamiczne dane w
onSaveInstanceState
), można go przekazać z powrotem,onCreate
jeśli działanie musi zostać odtworzone (np. Zmiana orientacji), aby nie utracić tego wcześniej Informacja. Jeśli nie podano żadnych danych,savedInstanceState
ma wartość null.źródło
źródło
onCreate(Bundle savedInstanceState)
otrzymaszBundle
wartość null, gdy aktywność zostanie rozpoczęta po raz pierwszy i będzie używana, gdy orientacja aktywności zostanie zmieniona .......http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android zapewnia inny elegancki sposób osiągnięcia tego. Aby to osiągnąć, musimy zastąpić metodę o nazwie
onSaveInstanceState()
. Platforma Android umożliwia użytkownikom zapisywanie stanu dowolnej instancji. Stan instancji można zapisać w paczce. Pakiet jest przekazywany jako argument do metody onSaveInstanceState.możemy załadować stan zapisanej instancji z pakietu przekazanego jako argument do
onCreate
metody. Możemy również wczytać stan zapisanej instancji wonRestoreInstanceState
metodzie. Ale zostawię to czytelnikom, aby zrozumieli.źródło
savedInstanceState
nie będzie,null
jeślionSavedInstanceState()
został wcześniej wywołany. zmiany orientacji to tylko jeden przykład, w którym może to nastąpić.Bundle
argument, żeonCreate(Bundle)
będzie non-null
if i tylko wtedy, gdy wcześniej została wywołanaActivity
jegoonSaveInstanceState
metoda. Dzieje się tak podczas zmian orientacji ... a także dzieje się, gdy aktywność powraca po jej zabiciu przez system operacyjny i gdy wywołujesz jakąkolwiek inną zmianę konfiguracji na urządzeniu.Jak odpowiedział Dhruv Gairola, możesz zapisać stan aplikacji, korzystając z opcji Pakiet zapisanyInstanceState. Staram się podać bardzo prosty przykład, który nowi uczniowie, tacy jak ja, mogą z łatwością zrozumieć.
Załóżmy, że masz prosty fragment z TextView i Button. Po każdym kliknięciu przycisku tekst się zmienia. Teraz zmień orientację swojego urządzenia / emulatora i zwróć uwagę, że utraciłeś dane (oznacza to zmienione dane po kliknięciu, które otrzymałeś), a fragment zaczyna się ponownie za pierwszym razem. Korzystając z Bundle SavedInstanceState możemy się tego pozbyć. Jeśli spojrzysz na cykl życia fragmentu. Fragment Lifecylce Otrzymasz , że metoda „onSaveInstanceState” jest wywoływana, gdy fragment ma zostać zniszczony.
Więc możemy zapisać stan, który oznacza zmienioną wartość tekstową w tym pakiecie w ten sposób
Po dokonaniu orientacji metoda „onCreate” zostanie wywołana, prawda? więc możemy to zrobić
Teraz po orientacji nie stracisz na wartości. Zmieniona wartość będzie zawsze wyświetlana.
źródło
Funkcja onCreate (pakiet zapisanyInstanceState) w systemie Android:
1) Gdy działanie zostało po raz pierwszy wywołane lub uruchomione, metoda onCreate (Bundle saveInstanceState) jest odpowiedzialna za utworzenie działania.
2) Kiedy kiedykolwiek orientacja (tj. Z poziomej na pionową lub pionową na poziomą) aktywności zostanie zmieniona lub gdy działanie zostanie wymuszone przez dowolny system operacyjny, wtedy saveInstanceState, czyli obiekt klasy pakietu zapisze stan działania.
3) Po zmianie orientacji onCreate (Bundle allowedInstanceState) wywoła i odtworzy działanie oraz załaduje wszystkie dane z saveInstanceState.
4) Zasadniczo klasa Bundle służy do przechowywania danych o aktywności, gdy powyższy warunek wystąpi w aplikacji.
5) onCreate () nie jest wymagany dla aplikacji. Ale powodem, dla którego jest używana w aplikacji, jest to, że ta metoda jest najlepszym miejscem do umieszczenia kodu inicjującego.
6) Możesz również umieścić swój kod inicjalizacyjny w onStart () lub onResume (), a kiedy aplikacja zostanie załadowana jako pierwsza, będzie działać tak samo jak w onCreate ().
źródło
onCreate(Bundle)
jest wywoływana, gdy czynność jest uruchamiana po raz pierwszy. Możesz go użyć do wykonania jednorazowej inicjalizacji, takiej jak utworzenie interfejsu użytkownika.onCreate()
przyjmuje jeden parametr, który ma wartość null lub niektóre informacje o stanie wcześniej zapisane przezonSaveInstanceState
.źródło
onCreate (pakiet zapisanyInstanceState) zostanie wywołany, a parametr saveInstanceState będzie różny od zera, jeśli Twoja aktywność została zakończona w scenariuszu (widok wizualny) opisanym powyżej. Twoja aplikacja może następnie pobrać (przechwycić) dane z saveInstanceState i ponownie wygenerować Twoją aktywność
źródło