Ich habe Fragment enthält Recyclerview in Haupttätigkeit
Fragment.java
%Vor%MainActivity.java
in onCreate-Methode:
%Vor%Aber als sich die Ausrichtung änderte, wurde mein RecyclerView neu gezeichnet.
Ich habe versucht, den Status save mit dem Überschreiben von onSaveInstanceState
und onRestoreInstanceState
wie folgt zu aktivieren: So verhindern Sie, dass benutzerdefinierte Ansichten den Status bei Änderungen der Bildschirmausrichtung verlieren oder Speichern und Wiederherstellen von View-Status Android , aber ohne Erfolg für mich
Wie zu korrekt speichern Sie den Zustand der RecyclerView und Adapter-Elemente bei der Orientierung ändern?
LÖSUNG: Mein Fragment erstreckt sich von BaseFragment mit einigen Methoden:
%Vor%In meinem Fragment überschreibe ich Methoden und speichere den Status von mlayoutManager
%Vor%Ich habe nach der Scroll-Position des RecyclerViews gesucht, aber nicht gesehen, wo ich sie abrufen kann. Daher denke ich, dass die beste Lösung darin besteht, Rotationsänderungen direkt in Ihrem Java-Code zu behandeln und einen Neustart Ihrer Aktivität zu verhindern Orientierungsänderung.
Um ein erneutes Starten bei einer Orientierungsänderung zu verhindern, können Sie diese Lösung befolgen.
Nachdem Sie verhindert haben, dass Ihre Aktivität neu gestartet wird, können Sie zwei XML-Layoutdateien erstellen, eine für den Hochformatmodus und eine für den Querformatmodus. Sie fügen ein FrameLayout in beide xml-Dateien ein und halten den Platz für Ihren RecyclerView.
Wenn die Methode onConfigurationChange (Configuration newConfig) aufgerufen wird, rufen Sie setContentView (int layoutFile) mit dem entsprechenden LayoutFile nach der neuen Ausrichtung auf und fügen Ihr RecyclerView, das Sie in einem Member Ihrer Klasse enthalten, in das FrameLayout ein.
>Tags und Links android android-fragments android-recyclerview