Frage Ändern Sie die Layoutdateien in derselben Aktivität


ich benutze setContentView(R.layout.main) um die Ansichten in derselben Aktivität zu wechseln. Ich rufe eine asynchrone Aufgabe auf und befülle die Daten in der Hauptlayoutdatei, danach ändere ich die Ansicht durch Aufruf setContentView(R.layout.main) Methode.

Ich habe erfahren, dass wir nicht verwenden sollten setContentView mehrere Male für dieselbe Aktivität. Obwohl es für mich gut funktioniert.

Kann jemand erklären, warum wir nicht benutzen sollten setContentView Methode mehrmals für die gleiche Aktivität, um die Ansichten zu ändern?

Werden Speicherausnahmen erstellt? Könnte jemand bitte klarstellen?


18
2018-03-20 09:27


Ursprung


Antworten:


Ich denke, das Wechseln von Views ist keine gute Idee, weil die Android-Plattform bereits einen starken Rahmen hat, um den Übergang zwischen den Ansichten zu handhaben und den Zustand jeder mit der Aktivität assoziierten Ansicht beizubehalten, immer besser mit dem bestehenden Framework zu bleiben, anstatt an etwas zu denken komplexe Implementierung, die Sie durchlaufen müssen, um all diese Dinge zu tun. Wenn Sie keine dieser Dinge in Ihrer Anwendung benötigen, und wenn Sie nur zwei oder drei Bildschirme in Ihrer gesamten Anwendung haben, können Sie versuchen, die Ansichten zu wechseln. Das selbst basierend auf wie Ihre Ansichten strukturiert sind, wenn Sie komplexe Logik und viele Daten benötigen, um diese Ansichten zu erstellen, wird dies nicht eine gute Möglichkeit, dies zu tun.Eine weitere Sache, wenn Sie hinzufügen mehr Ansichten sagen Funktionalität zu Ihrer Anwendung das laden müssen von der Aktivität gehandhabt werden. In diesem Fall deklarieren und initialisieren Sie alle Ansichten innerhalb dieser bestimmten Aktivität, sodass die Pflege all dieser Sichten-Instanzen schwer ist. Wenn Sie mehr über Activity und Task erfahren möchten Verweise diesen Link


2
2018-03-20 09:38



Nun, jedes Mal, wenn Sie setContentView () aufrufen, müssen Sie alle Layouts wieder finden, außer dass Sie es "machen" können. Aber wie besprochen Hier das ist krank beraten, da es eindeutig gegen die Android-Richtlinien geht. Auch Commonsware hat einige sehr wichtige Punkte Hier Eine der wichtigsten ist, dass Sie anfällig für Speicherverlust sind, wenn Sie vergessen, Dinge aus Ihren Ansichten etc. zu bereinigen, die Android normalerweise für Sie behandeln würde.

Kurz gesagt, Sie sollten den Android-Richtlinien folgen und verwenden Fragmente oder starte ein neues Activity.


0
2018-03-20 09:44



Entsprechend der Entwicklerdokumente setContentView (int layoutResID) wird verwendet

Legen Sie den Aktivitätsinhalt aus einer Layout-Ressource fest. Die Ressource wird aufgebläht und fügt der Aktivität alle Ansichten der obersten Ebene hinzu.

In der besten Praxis wird diese Methode benutzt, um Ihr zu erhöhen Activity Layout beim Start. Dies bedeutet nicht, dass es Probleme in der Zukunft verursachen wird, wenn Sie diese Methode verwenden. Um eine Antwort zu zitieren Dies Frage

Die setContentView für Ihre Aktivität ruft tatsächlich die setContentView für das Fenster auf, das von der Aktivität verwendet wird. Dies ist viel mehr als nur das Aufblasen des Layouts.

Ich schlage vor, dass Sie eine alternative Möglichkeit finden, Layouts wie die Verwendung eines zu wechseln ViewPagermit Fragments oder ein anderer Tabbing-Ansatz, aber am Ende kommt alles darauf an, was Sie tun wollen.

Dies Frage könnte Ihnen auch geben, wonach Sie suchen.


0
2018-03-20 09:46