Kann ich savedInstanceState()
verwenden, um den Status beim Entfernen eines Fragments zu speichern, und dann den Status wiederherstellen, wenn ich das Fragment vom Backstack lösche? Wenn ich das Fragment vom Backstapel wiederherstelle, ist das sainedInstanceState-Bundle immer null.savedInstanceState beim Wiederherstellen eines Fragments aus dem Backstack
Derzeit ist der App-Ablauf: Fragment erstellt -> Fragment entfernt (zum Backstack hinzugefügt) -> Fragment aus Backstack wiederhergestellt (SavedInstanceState-Bundle ist null). Hier
ist der entsprechende Code:
public void onActivityCreated(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
Bundle bundle = getArguments();
Long playlistId = bundle.getLong(Constants.PLAYLIST_ID);
int playlistItemId = bundle.getInt(Constants.PLAYLISTITEM_ID);
if (savedInstanceState == null) {
selectedVideoNumber = playlistItemId;
} else {
selectedVideoNumber = savedInstanceState.getInt("SELECTED_VIDEO");
}
}
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
outState.putInt(Constants.SELECTED_VIDEO, selectedVideoNumber);
}
Ich denke, das Problem ist, dass onSavedInstanceState()
nie aufgerufen wird, wenn sie entfernt werden und hinzugefügt Stapel zurück. Wenn ich onsavedInstanceState() nicht verwenden kann, gibt es eine andere Möglichkeit, das zu beheben?
Vielen Dank :) Das löste mein Problem –
nicht sicher, dies ist eine gute Idee. Beendet dies den Zweck, die Ansicht zu zerstören, um Speicher freizugeben, wenn Sie einen Verweis darauf speichern? – craigrs84
Ich bin mir eigentlich nicht sicher, da ich keine direkten Tests durchgeführt habe. Mein Denken geht jedoch so.Wenn Sie alle Elemente in Ihrem Layout initialisieren, ist es Standard, die meisten dieser Elemente als globale Variablen festzulegen. Wenn also im obigen Beispiel die Basisansicht aufgrund der Referenz nicht wiederverwendet werden kann, ist Android nicht in der Lage, das Element zu recyceln Jede dieser Ansichten führt zu demselben Problem mit dem Speicher. – AllDayAmazing