Android: verwendet setContentView mehrmals beim Ändern von Layouts?

8

verwendet setContentView beim Ändern von Layouts mehrmals falsch?

Manche Leute sagen, dass es schlecht ist und sie sagen nie warum.

und gibt es noch etwas anderes, um das Layout mit der Taste zu ändern?

    
Brsgamer 06.03.2014, 14:51
quelle

3 Antworten

8

Sehen wir uns die Android-Dokumente :

  

Legen Sie den Aktivitätsinhalt auf eine explizite Ansicht fest. Diese Ansicht wird direkt in die Ansichtshierarchie der Aktivität eingefügt.

Also überschreibt setContentView das Layout und ersetzt es durch ein neues. Normalerweise möchten Sie dies nur einmal in onCreate tun. Theoretisch könnten Sie mehr tun, aber es wird das gesamte Layout neu gezeichnet, und das könnte einige Zeit dauern. Es gibt ein paar Alternativen, je nachdem, was genau Sie wollen:

  1. ViewAnimator : Dies ist nützlich, um eine schnelle Animation anzuzeigen, wenn Sie die Ansicht mehrmals ändern möchten in schneller Folge.
  2. Fragmente - Anstatt die gesamte Ansicht neu zu zeichnen, können Sie Fragmente austauschen. Jedes Fragment ist eine Art Mini-Aktivität, und insgesamt wird der Code viel besser enthalten.
  3. Pass Intent-Argumente - Übergeben Sie Informationen an eine Aktivität, die bei der Einrichtung helfen soll. Die erste Aktivität übergibt Informationen an eine gemeinsame zweite Aktivität, die sich anhand der Informationen, die sie von der ersten Aktivität erhält, selbst einrichten kann.

Wie für Ihre spezielle Anwendung, hier ist, was ich tun würde:

  1. Jede Band folgt einem bestimmten Layout. Es gibt nur 1 oder vielleicht ein paar mögliche Layouts.
  2. Wenn die Bandaktivität beginnt, wird das entsprechende Layout ausgewählt und ausgefüllt, wobei Sie wissen, was sich dort befindet.

Das Android SDK zeigt, wie Daten von einer Aktivität an eine andere weitergegeben werden. Übergeben Sie einfach die Daten, die die zweite Aktivität benötigt, von der ersten, etwa so:

%Vor%

Die zweite Aktivität wird dies tun:

%Vor%     
PearsonArtPhoto 06.03.2014, 15:00
quelle
0
  

Ich kann kein Beispiel zeigen, weil ich auf die Antwort warte. okay, ich   haben Sie die App von Texten (es wird Liedtext der Band zeigen) und Alben sind neu   Aktivitäten, aber ich möchte nicht viele Aktivitäten und das ist, warum ich will   Erstellen Sie Songs nur Layouts und wechseln Sie die Ansichten mit der Taste Drücken Sie

Es hört sich so an, als würdest du das falsch machen. Wenn Sie die Benutzeroberfläche ändern möchten, die ein Activity enthält, dann wäre Fragment s der bessere Ansatz. Es gibt ein bisschen eine Lernkurve dort, aber es ist gutes Android-Design und gut dokumentiert .

>

Außerdem scheinen Sie Formatierung und Inhalt zu verwirren. Wenn Sie Liedtexte anzeigen, benötigen Sie für jedes Lied kein neues Layout. Sie müssen nur den Text ändern und sie in der gleichen Aktivität behalten. Was Sie tun, ähnelt dem Erstellen eines neuen Web-Browsers für jede Webseite, die Sie besuchen möchten. Finde stattdessen einen Weg, den Text zu speichern und ihn auf einer einzelnen Aktivität (oder in einem Fragment) anzuzeigen, um diesen Text anzuzeigen. Dasselbe würde für jedes Album gelten: Eine Aktivität würde das Albumcover in der Ecke (oder als Hintergrund), den Titel, das Veröffentlichungsdatum usw. als Text und dann eine Liste von Songs darunter anzeigen. Der tatsächliche Inhalt von TextView s kann sich ändern, aber das Layout sollte identisch sein.

    
323go 06.03.2014 15:08
quelle
0

Ja, das ist schlecht, weil es Ihre Aktivität mit Ihrem Layout aufbläht und wenn Ihr Layout viele Ansichten hat, kann es etwas dauern.

Um zu vermeiden, dass Sie einen ViewAnimator verwenden sollten, wo Sie alle Ihre Layouts setzen und Sie Wechseln Sie mit showNext () und showPrevious (), dh:

%Vor%

Und in deinem Code:

%Vor%     
Lovy 06.03.2014 15:21
quelle