Fragment nicht hinzugefügt (inkonsistenter Absturz)

8

In meinem MainActivity habe ich:

%Vor%

In setup() , rufe ich initializeTabs() in einem Callback an:

%Vor%

Diese letzte Zeile stürzt bei einigen Kunden ab.

%Vor%

Aber nicht jedes Mal. Warum sollte das manchmal passieren? Etwas damit zu tun, dass das Fragment nicht verbunden ist? Ich habe ein paar Dinge über das Überprüfen von isAdded() in einem Fragment gelesen, aber das dient zur Überprüfung, ob ein Fragment zu einer Aktivität hinzugefügt wurde. Ich verwende ein FragmentStatePagerAdapter :

%Vor%

Könnte saveState(){ return null;} sein? Dies ist da, wie ich Dinge verstehe, um sicherzustellen, dass die Ansicht jedes Mal aktualisiert wird.

    
quantumpotato 12.02.2017, 20:21
quelle

2 Antworten

4

onResume() wird jedes Mal aufgerufen, wenn Ihre Aktivität in den Vordergrund zurückkehrt.

Wenn einer Ihrer Benutzer zum Beispiel die Home-Taste drückt und zu Ihrer App zurückkehrt, wird getStoreDetails() erneut aufgerufen und Sie werden einen neuen Adapter (mit derselben alten Fragmentliste) erstellen, wenn das Ergebnis eintrifft.

Sie sollten Ihre Fragmente instanziieren, einen Adapter erstellen und Ihr viewpager nur einmal mit dem Adapter füllen ( onCreate() wäre der Spot).

Wenn neue Daten von getStoreDetails() eintreffen, aktualisieren Sie einfach die bereits hinzugefügten Fragmente mit den neuen Daten.

    
Hanan Rofe Haim 14.02.2017, 23:32
quelle
1

Dies liegt daran, dass Sie null in saveState() zurückgeben. Sie sollten nicht versuchen, dieses Verhalten zu überschreiben. Aber selbst wenn Sie es aus irgendeinem Grund tun möchten, müssen Sie auch public void restoreState(Parcelable state, ClassLoader loader) überschreiben, um einen Absturz zu vermeiden, da diese Methode auf Daten basiert, die in saveState() gespeichert wurden.

Aber ich würde vorschlagen, dass Sie es überhaupt nicht überschreiben und stattdessen erklären, was Sie dort erreichen wollten.

    
Dimezis 20.02.2017 16:47
quelle