Ich habe 3 Fragmente ... mit ihren 3 Navigations-Tabs.
Das Problem ist, dass, wenn ich auf der ersten Registerkarte bin, und ich klicke auf die dritte .. Wenn ich ein anderes Mal auf die erste klicke, wird das gesamte Fragment neu geladen. Wenn ich auf die zweite Registerkarte (in der Mitte) klicke und ich auf die erste klicke, wird sie nicht neu geladen.
Mein Ziel ist, dass ich meine Fragmente niemals erneuern will!
Wie kann ich es tun?
Mein Code ist:
%Vor%Und das:
%Vor%}
C_FRAGMENTS_TO_KEEP_IN_MEMORY ist die Anzahl der Registerkarten rechts und links der aktuell ausgewählten Registerkarte, die im Speicher verbleiben sollen. Also sollte in deinem Fall 2 sein.
Bitte stellen Sie sicher, dass Sie nicht jedes Mal eine neue Fragment-Instanz erstellen, wenn Sie die getItem-Methode in Ihrem viewpager-Adapter aufrufen.
Überprüfen Sie die Antwort von @Rarw auf dieser Seite.
Versuchen Sie, Ihre ViewPager
offScreenPageLimit so einzurichten, dass sie die Anzahl der zu ladenden Fragmente abdeckt. OffScreenPageLimist hält Fragmente in einem Leerlaufzustand am Leben, wenn sie es sind nicht sichtbar. Ich sehe diesen Wert nicht in Ihrem Code und basierend auf dem, was Sie beschreiben, die Fragmente weiterverwerten, klingt es für mich so, als ob Sie den Standardzustand 1 verwenden, der nur eines der Fragmente außerhalb des Bildschirms enthält und nicht beides.
Einige Einschränkungen, dieser Ansatz funktioniert nur, wenn Sie im Voraus wissen, wie viele Fragmente Sie benötigen, denn wenn Sie Fragmente dynamisch hinzufügen und entfernen, ist es schwer zu wissen, wie viele oder welche zu behalten sind.
AKTUALISIEREN
Dies ist wahrscheinlich der Grund, warum Ihre Seiten erfrischend sind:
%Vor%Sie geben jedes Mal ein neues Fragment zurück, wenn Sie die ID wechseln. Was solltest du so machen:
%Vor%Auf diese Weise hören Sie auf, das Fragment jedes Mal neu zu erstellen, wenn sich die Registerkarte ändert, und behalten stattdessen diese Instanz bei.
Tags und Links android android-fragments