2013-01-02 19 views
6

Ich habe 2 Aktivitäten: A, B.Layout von Activity A, hat eine Viewgroup, die der Benutzer seinen Inhalt ändert.In Aktivität B muss ich diese Viewgroup erneut anzeigen, ohne Änderungen, es muss eine echte Kopie dieser Viewgroup sein , also Texte, Farben, Dimensionen, Reihenfolge (von Kindern) und ... müssen gleich sein.So kann ich nicht Layout Inflater verwenden. Ist es möglich, ohne Klassen der Art der Kinder dieser Viewgroup zu erstellen und Eigenschaften zu ändern? Weil, wenn ich habe mehr als 2 Aktivität mit verschiedenen Viewgroups, es ist sehr schwierig, Viewgruppen jeder Aktivität in der letzten Aktivität anzuzeigen.Erstellen einer Kopie einer Ansicht?

Auch ich kann diese Viewgruppen nicht von ihren Eltern entfernen.

+1

http://stackoverflow.com/questions/4159211/how-do-i-clone-a-view –

Antwort

1

Erstellen Sie eine Klasse, die die Konfiguration Ihrer Ansichtsgruppe enthält. Lassen Sie diese Konfigurationsklasse alle Informationen enthalten, die sich auf Ihre ViewGroup beziehen. Es enthält die Texte, die Farben, die Dimensionen, die Reihenfolge und alles, was der Benutzer geändert hat. Übergeben Sie ein Objekt dieser Klasse von Aktivität A an Aktivität B und reproduzieren Sie dieselbe Ansicht, indem Sie das gleiche Layout aufblasen.

Hoffe, dass hilft.

Und um Ihre Frage zu beantworten, gibt es keinen anderen einfachen Weg, dies zu tun.

+0

Gibt es eine Möglichkeit, alle Konfigurationen einer Ansicht von ihrer Instanz zu erhalten? Zum Beispiel gibt es eine Klasse zu halten Konfigurationen einer Ansicht? –

+0

Nein. Sie müssen eigene Klassen erstellen und Variablen deklarieren, die für die Reproduktion der Ansichten wichtig sind. – Enigma

4

Keine einfache Möglichkeit, dies zu tun. Sie können die Ansicht nicht zwischen Aktivitäten verschieben. So haben Sie mehrere Möglichkeiten:

  • eine Bitmap von Viewgroup erstellen und in neuer Aktivität zeigt in (nicht funktioniert ist, dass Sie bearbeitbare Kopie benötigen)
  • speichern Ansicht der hierarchi Zustand in alter Aktivität und neu erstellen in neuen (mit Hilfe von Fragmenten wird es einfacher).
  • keine neue Aktivität erstellen. Ändere einfach einige UI-Teile in alten, die die Ziel-ViewGroup nicht berühren.
5

Wenn ihr Inhalt gleich ist, hat es keinen Sinn, zwei verschiedene Aktivitäten zu haben. Sie können den Inhalt einer Aktivität dynamisch ändern, und das Verhalten ist dasselbe wie bei zwei Aktivitäten. Wenn es wirklich notwendig ist, müssen Sie alle erforderlichen Informationen speichern, um die Aktivität erneut zu rekonstruieren und an die neu erstellte Aktivität zu übergeben. Werfen Sie einen Blick auf this.

1

Um die ViewGroup zu teilen, müssen Sie sie in ein Fragment namens C umgestalten. Erstellen Sie dann Fragmente für die Abschnitte von Aktivität A und B minus diesen gemeinsamen Anteil. Dann enthalten Sie alle diese Fragmente in einer neuen enthaltenden Aktivität (Sie benötigen nicht mehr die Aktivitäten A und B).

Fragment A und C werden die neue Aktivität A sein. Die Fragmente B und C werden die neue Aktivität B sein. Um vom ersten in den zweiten Zustand zu wechseln, fügen Sie Fragment B hinzu und entfernen Fragment A. Denken Sie daran, hinzuzufügen diese Transaktion auf den Backstack, so dass der Zurück-Button Sie zurück in den ersten Zustand bringt.

1

Nur ein allgemeiner Zweifel? Warum sollten Sie für zwei Aktivitäten gehen? Warum nicht zwei Fragmente verwenden, die der gleichen Ansicht zugeordnet sind Verwenden Sie die zugrunde liegende Aktivität, um alle Änderungen in einem der Fragmente (Ansicht) zu speichern, und wenn der Benutzer an die andere Ansicht übergibt, senden Sie einfach die Parameter für das zweite Fragment. Dadurch emulieren Sie dem Benutzer, dass es zwei Aktivitäten sind, aber in Wirklichkeit sind es nur zwei Fragmente, die von einer einzigen Aktivität gesteuert werden.

Verwandte Themen