Orientierungsänderung mit viewPager innerhalb von FragmentActivity

8

Ich versuche eine App zu erstellen, die ein Buch im Hoch- und Querformat zeigt. Offensichtlich gibt es 1 Seite im Portrait und 2 im Querformat. Jeder der Modi funktioniert ziemlich gut, aber wenn ich die Ausrichtung von Hochformat zu Querformat ändere, versucht der viewPager, 2 Seiten aus dem Hochformat zu bekommen, anstatt zu versuchen, 2 Doppelseiten aus dem Querformat zu bekommen ... Tatsächlich behält FragmentStatePagerAdapter die 2 im Hochformat erstellten Fragmente und verwendet sie, bevor sie 2 Doppelseiten für den Querformatmodus erstellen . Wenn ich erneut im Hochformat wechsle, verwendet FragmentStatePagerAdapter die 2 Fragmente, die zuvor im Querformat erstellt wurden, sodass ich wieder 1 Doppelseite statt 1 Einzelseite usw. sehe. Wenn ich die Orientierung weiter wechsle, bekomme ich einen OutOfMemoryError aufgrund der Tatsache, dass FragmentStatePagerAdapter niemals Spülen Sie die Fragmente bei der Orientierungsänderung.

Hier sind zwei Anwendungsfälle zum besseren Verständnis:

  • Ich starte den viewPager im Hochformat
  • Ich sehe Seite 1 ok
  • ich wische nach rechts und ich sehe Seite 2 ok
  • ich wische nach rechts und ich sehe Seite 3 ok
  • Ich drehe den Bildschirm in den Querformatmodus
  • Ich sehe Seite 3 falsch
  • Ich wische nach rechts und ich sehe falsch Seite 4
  • Ich wische nach rechts und ich sehe Seite 5 und 6 in Ordnung

  • Ich starte den viewPager im Hochformat

  • Ich sehe Seite 1 ok
  • ich wische nach rechts und ich sehe Seite 2 ok
  • ich wische nach rechts und ich sehe Seite 3 ok
  • Ich wische nach rechts und ich sehe Seite 4 ok
  • Ich wische nach rechts und ich sehe Seite 5 ok
  • Ich drehe den Bildschirm in den Querformatmodus
  • Ich sehe Seite 5 falsch
  • Ich wische nach links und ich sehe Seite 4 falsch
  • Ich wische nach links und ich sehe Seite 2 und 3 ok

    %Vor%

    }

    %Vor%

Ich habe gelesen, dass der FragmentManager im Framework den Zustand speichert und alle aktiven Fragmente wiederherstellt, die der Pager erzeugt hat. Ich denke also, wenn sich die Ausrichtung ändert, sagt der FragmentManager

  

Hey! Ich habe bereits 2 Artikel erstellt, also muss ich keine Nachrichten erstellen,   lass sie holen

Aber tatsächlich bekommt es die 2 Elemente (Seite / Doppelseite) aus dem alten Orientierungsmodus. Also muss ich einen Weg finden, die Fragmente zu löschen, die vom FragmentManager gespeichert wurden, wenn die Orientierung geändert wird.

Ich habe auch diese Methode getestet. Das Problem scheint mit diesem

zu tun zu haben

Mit freundlichen Grüßen

    
popov130 28.02.2013, 17:01
quelle

1 Antwort

-1

Versuchen Sie, die Ausrichtung auf Hoch- oder Querformat zu beschränken. Weil wir den Pager nur im genauen Modus verwenden können.

    
Lucky Rana 02.07.2013 12:20
quelle