2016-04-15 10 views
1

Ich habe 3 Fragmente in ViewPager. Wenn ich von Fragment 1 nach 3 gleite, aktualisiert das Fragment 3 die Daten (führe alle Methoden erneut aus), aber wenn ich von 1 nach 2 oder 2 nach 3 schlüpfe, aktualisiert das nächste Fragment die Daten nicht.Fragment in Slidebar aktualisieren

Können Sie mir helfen zu verstehen, warum? Wie kann ich jedes Mal auffrischen?

Meine Aktivität erweitert Basisklasse FragmentActivity und Fragment erweitert Basisklasse Fragment.

Antwort

1

ViewPager verwendet standardmäßig setOffscreenPageLimit(1), was bedeutet, dass es eine Ansicht nach links und eine weitere nach rechts "cacht". Wenn Sie also auf 2. Fragment sind und entweder 1. oder 3. gehen, wird es nicht neu geladen. Wenn Sie zum 1. und zum 2. zurückkehren würden, würde der 3. neu geladen werden.

setOffscreenPageLimit(0) erzeugt eine Warnung (Minimum muss 1 sein).

Eine Lösung wäre, laden Sie die in Ihre Fragmente zu erkennen, wenn sie sichtbar werden, und behandeln Laden/Aktualisieren von Daten dort.

@Override 
public void setUserVisibleHint(boolean isVisibleToUser) { 
    super.setUserVisibleHint(isVisibleToUser); 
    if (isVisibleToUser) { 
     // load data here 
    }else{ 
     // fragment is no longer visible 
    } 
} 

Diese Antwort wurde this SO answer entnommen.

-1

Zuerst in Fragment-Struktur Android Lasten links und rechts Fragment zuvor.Zum Beispiel im zweiten Fragment 1 und 2 bereits installiert wurde. Dafür gibt es setOffscreenPageLimit Funktion.

Ihre zweite Frage: es ist möglich, aber auf eine knifflige Art und Weise. Ich benutze im Allgemeinen notify Adapter dafür. Nach jedem Swipe können Sie notifyDataSetChanged(); verwenden oder Ihre Daten auf Adapter neu laden.

Verwandte Themen