Wechsel zwischen 2 Layouts in Android-Aktivität

8

Ich habe zwei verschiedene Layoutdateien, die ich zum Ändern der gleichen Daten verwenden möchte, ich sollte zu meinem Layout für die "Bearbeitungsansicht" wechseln, die es dem Benutzer erlaubt, Grafikdaten zu ändern und es ihnen dann zu erlauben, zu einem anderen zu wechseln "Detailansicht", die ein detailliertes Diagramm anzeigt (mithilfe der androidplot-Bibliothek).

Mein Problem ist, wenn ich zu meiner "Bearbeitungsansicht" zurückwechsle, sind meine graphischen Linien weg und nur die Achsen zeichnen (so wechselt das Layout und der onDraw () wird für meine Graphansicht aufgerufen). Alles ist in derselben Aktivität gespeichert, so dass ich nicht verstehe, warum das nicht funktioniert?

Die Zeilen werden im Graph View-Objekt selbst gespeichert, das persistent sein sollte, da es in meiner Aktivität eine gespeicherte Variable ist.

Ich verwende diese beiden Methoden, um Layout-Dateien bei einem Klick auf die Schaltfläche zu wechseln.

%Vor%     
John Lotacs 10.08.2011, 20:35
quelle

3 Antworten

23

Jedes Mal, wenn Sie setContentView aufrufen, wird das Layout aufgebläht, so dass die Daten erneut gesetzt werden müssen. Machst du das?

Jedenfalls würde ich empfehlen, die beiden Layouts in einer Datei zusammenzuführen. Verwenden Sie anschließend ViewFlipper , um von einem Layout zum anderen zu wechseln. Das würde ähnlich aussehen wie:

graph.xml:

%Vor%

Dann müssen Sie nur showNext() aufrufen, um die Layouts in Ihrer Aktivität zu wechseln:

%Vor%

Ich hoffe, es hilft.

    
Xavi Gil 10.08.2011, 20:59
quelle
5
Warum pumpen Sie immer das Layout auf? das ist wirklich teuer. Versuchen Sie, das Zusammenführungslayout zu verwenden. so dass Sie die Sichtbarkeit auf "Gone" oder "Visible" ändern können Siehe mehr: Ссылка

    
alosdev 10.08.2011 20:56
quelle
0

Ich mache etwas Ähnliches für eine App, an der ich gerade arbeite.

Eine einfache Lösung besteht darin, die Standardsichtbarkeit der zweiten Ansicht auf android:visibility="GONE" in XML festzulegen und dann jede Ansicht im Code zu identifizieren. Sie können dann die Sichtbarkeit mit view1.setVisibility(View.GONE) und view2.setVisibility(View.VISIBLE)

festlegen

Hoffe, das hilft! Es hat super für mich funktioniert:)

    
Codeman 10.08.2011 20:58
quelle

Tags und Links