Ich habe eine Navigationsleiste implementiert und möchte mein Fragment laden, bevor die Navigationsleiste geschlossen wird. Momentan wird das Fragment parallel zum Schließen der Schublade geladen. Wenn das Fragment also schwer ist, bleibt die Benutzeroberfläche ein wenig hängen.
Der Code, den ich habe, ist:
%Vor%Wie kann ich das ändern, so dass ich sehe, dass mein Fragment zuerst geladen wird (im Hintergrund) und wenn das Laden beendet ist, schließt die Navigationsleiste?
Meine Lösung war, das Fragment NACH dem Schließen der Schublade zu laden: rufen Sie tatsächlich loadFragment-Methode in onDrawerClosed
auf %Vor%Versuchen Sie zu laden, nachdem die Schublade geschlossen wurde Verwenden Sie den Handler, um eine verzögerte Ausführung zu erstellen. Damit es beim Schließen der Schublade nicht hängen bleibt
Verwenden Sie in der Methode onItemClick()
den folgenden Code:
// Eine andere Möglichkeit ist
Erstellen Sie eine AsyncTask, und starten Sie in der doInBackground () -Methode die Fragmenttransaktion, und schließen Sie die Schublade in onPostExecute ()
DrawerLayout.DrawerListener kann verwendet werden, um den Zustand und die Bewegung von Schubladenansichten zu überwachen. Vermeiden Sie kostspielige Operationen wie das Layout während der Animation , da dies zu Problemen führen kann Stottern; Versuchen Sie, während des Zustands STATE_IDLE teure Operationen auszuführen. Quelle .
Mit anderen Worten empfiehlt Android, dass Sie darauf warten, dass sich Ihre Schublade schließt, bevor Sie Fragmente austauschen.
Tags und Links android android-fragments navigation