2016-04-29 6 views
0

behalten Ich habe ein Tab mit zwei Fragmenten. Beide Fragmente laden Daten aus dem Netzwerk herunter und zeigen sie an.Daten auf Fragment's Tab

Der typische Anwendungsfall ist: Benutzer öffnet App, Fragment_A lädt herunter und zeigt Daten an. Klickt der Benutzer auf die andere Registerkarte (Registerkarte B), lädt Fragment_B Daten herunter und zeigt sie an. Wenn der Benutzer zu Fragment_A zurückkehrt, sind die Daten bereits vorhanden und werden angezeigt. Wenn er jedoch erneut wählt, um zur nächsten Registerkarte (Fragment_B) zu wechseln, müssen die Daten erneut heruntergeladen werden.

Also, wie kann ich Daten zu Fragment_B halten, während der Benutzer zum vorherigen Tab (Tab A) navigiert? Ist das etwas, was ich mit onSaveInstanceState() tun kann?

Warum speichert Fragment_A Daten und nicht Fragment_B? Der Code ist identisch mit dem einzigen, was Änderungen sind die Daten angezeigt werden.

+1

Sie können Daten in Ihrer Aktivität downloaden und diese Aktivität mit Ihrem Fragmente verbinden die Daten – TUSHAR

+0

Mit dem Download erhalten Sie bedeutet es in meiner Aktivität zu speichern? – Mes

+1

ja ich sage, dass Daten in Aktivität speichern & durch Daten meine ich ist, die Antwort von Server – TUSHAR

Antwort

4

Sie können:

  1. Host die Daten in dem Behälter Aktivität und Zugriff auf die von dem Fragment

  2. ein Singleton-Objekt verwenden/einige Klasse in der Anwendungsklasse gehostet

Aber bedenken Sie, dass jedes Mal, wenn Ihr Prozess getötet wird, die Daten auf jeden Fall verloren gehen. Wenn Sie möchten, dass die Daten über mehrere Prozessspawns hinweg bestehen bleiben, müssen Sie sie in sqllite/eine Art Persistenz speichern.

+0

Ich werde versuchen, die Daten in der Container-Aktivität zu hosten und sehen, was passiert. Danke für deine Antwort – Mes

0

Ja, Sie können Ihre Daten in onSavedInstanceState() speichern, aber es wird nicht empfohlen zu verwenden, da Activity über eigene Lebenszyklus-Methoden verfügt und onSaveInstanceState() kein Teil davon ist.

So ist es nicht garantiert, immer aufgerufen zu werden.

Zur Lagerung gibt es andere Optionen wie

  • SharedPreferences
  • SQLite-Datenbank