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
int counter = 0;
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt("value",counter);
}
Nachdem Sie die Ausrichtung vorgenommen haben, wird die Methode "onCreate" aufgerufen, oder? also können wir das einfach machen
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
if(savedInstanceState == null){
//it is the first time the fragment is being called
counter = 0;
}else{
//not the first time so we will check SavedInstanceState bundle
counter = savedInstanceState.getInt("value",0); //here zero is the default value
}
}
Jetzt verlieren Sie Ihren Wert nach der Orientierung nicht mehr. Der geänderte Wert wird immer angezeigt.