Kann mir jemand helfen, über die Bundle savedInstanceState
in onCreate(Bundle savedInstanceState)
Ich bin Neuling in Android zu wissen . Ich versuche es von developer.android.com zu verstehen. Aber ich kann es nicht verstehen. Kann jemand es vereinfachen?
122
Antworten:
Wenn Sie den Status der Anwendung in einem Bundle speichern (normalerweise nicht persistente, dynamische Daten in
onSaveInstanceState
), kann er an zurückgegeben werden,onCreate
wenn die Aktivität neu erstellt werden muss (z. B. Änderung der Ausrichtung), damit Sie diese nicht vorher verlieren Information. Wenn keine Daten angegeben wurden,savedInstanceState
ist null.Quelle
quelle
onCreate(Bundle savedInstanceState)
Sie erhalten dieBundle
Null, wenn die Aktivität zum ersten Mal gestartet wird, und sie wird verwendet, wenn die Aktivitätsorientierung geändert wird .......http://www.gitshah.com/2011/03/how-to-handle-screen-orientation_28.html
Android bietet eine weitere elegante Möglichkeit, dies zu erreichen. Um dies zu erreichen, müssen wir eine aufgerufene Methode überschreiben
onSaveInstanceState()
. Mit der Android-Plattform können Benutzer jeden Instanzstatus speichern. Der Instanzstatus kann im Bundle gespeichert werden. Das Bundle wird als Argument an die onSaveInstanceState-Methode übergeben.Wir können den Status der gespeicherten Instanz aus dem Bundle laden, das als Argument an die
onCreate
Methode übergeben wurde. Wir können den gespeicherten Instanzstatus auch inonRestoreInstanceState
method laden . Aber das überlasse ich den Lesern.quelle
savedInstanceState
wird nicht sein,null
wennonSavedInstanceState()
zuvor aufgerufen wurde. Orientierungsänderungen sind nur ein Beispiel, in dem dies auftreten kann.Bundle
ArgumentonCreate(Bundle)
wird nicht sein ,null
wenn und nur wenn dieActivity
es der hatteonSaveInstanceState
Methode zuvor genannt. Dies geschieht während Orientierungsänderungen ... und auch, wenn die Aktivität nach dem Beenden durch das Betriebssystem zurückkehrt und wenn Sie eine andere interessierende Konfigurationsänderung auf Ihrem Gerät auslösen.Wie Dhruv Gairola antwortete, können Sie den Status der Anwendung mithilfe von Bundle savedInstanceState speichern. Ich versuche ein sehr einfaches Beispiel zu geben, das neue Lernende wie ich leicht verstehen können.
Angenommen, Sie haben ein einfaches Fragment mit einer Textansicht und einer Schaltfläche. Jedes Mal, wenn Sie auf die Schaltfläche klicken, ändert sich der Text. Ändern Sie nun die Ausrichtung Ihres Geräts / Emulators und stellen Sie fest, dass Sie die Daten verloren haben (dh die geänderten Daten nach dem Klicken) und das Fragment beginnt beim ersten Mal erneut. Durch die Verwendung von Bundle savedInstanceState können wir dies beseitigen. Wenn Sie einen Blick in den Lebensstil des Fragments werfen. Fragment Lifecylce Sie erhalten, dass eine Methode "onSaveInstanceState" aufgerufen wird, wenn das Fragment zerstört werden soll.
Wir können also den Status speichern, dh den geänderten Textwert in diesem Bundle wie folgt
Nachdem Sie die Ausrichtung vorgenommen haben, wird die Methode "onCreate" aufgerufen, oder? also können wir das einfach machen
Jetzt verlieren Sie Ihren Wert nach der Orientierung nicht mehr. Der geänderte Wert wird immer angezeigt.
quelle
onCreate (Bundle savedInstanceState) Funktion in Android:
1) Wenn eine Aktivität zum ersten Mal aufgerufen oder gestartet wird, ist die Methode onCreate (Bundle savedInstanceState) für die Erstellung der Aktivität verantwortlich.
2) Wenn die Ausrichtung (dh von horizontal nach vertikal oder vertikal nach horizontal) der Aktivität geändert wird oder wenn eine Aktivität von einem Betriebssystem gewaltsam beendet wird, speichert savedInstanceState, dh das Objekt der Bundle-Klasse, den Status einer Aktivität.
3) Nachdem die Ausrichtung geändert wurde, ruft onCreate (Bundle savedInstanceState) die Aktivität auf, erstellt sie neu und lädt alle Daten aus savedInstanceState.
4) Grundsätzlich wird die Bundle-Klasse verwendet, um die Aktivitätsdaten zu speichern, wenn die oben genannten Bedingungen in der App auftreten.
5) onCreate () ist für Apps nicht erforderlich. Der Grund, warum es in der App verwendet wird, ist, dass diese Methode der beste Ort ist, um Initialisierungscode einzufügen.
6) Sie können Ihren Initialisierungscode auch in onStart () oder onResume () einfügen. Wenn Ihre App zuerst geladen wird, funktioniert sie genauso wie in onCreate ().
quelle
onCreate(Bundle)
wird aufgerufen, wenn die Aktivität zum ersten Mal gestartet wird. Sie können es verwenden, um eine einmalige Initialisierung durchzuführen, z. B. das Erstellen der Benutzeroberfläche.onCreate()
Nimmt einen Parameter, der entweder null ist, oder einige Statusinformationen, die zuvor von der gespeichert wurdenonSaveInstanceState
.quelle
onCreate (Bundle savedInstanceState) wird aufgerufen und savedInstanceState ist nicht null, wenn Ihre Aktivität in einem oben beschriebenen Szenario (visuelle Ansicht) beendet wurde. Ihre App kann dann die Daten von savedInstanceState abrufen (abfangen) und Ihre Aktivität neu generieren
quelle