2017-05-15 1 views
1

Ich habe an der Anwendung gearbeitet, die 3 Typen der damit verbundenen Konten hat. Wir schaffen ein einzelnes Layout und view/hide Gegenstände darauf je nach, aus dem Konto, das Sie gerade angemeldet sind.Der beste Ansatz für die Handhabung der gleichen Layouts für verschiedene Aktivitäten

Mit diesem Ansatz haben wir activities/fragmentsviele verschiedene Dinge zu tun, behandeln sie alle eingewickelt Fälle in if/else prüft usw. Mit wachsendem Projekt wird es schwierig, diese Klassen zu erhalten.

Sag mal, wenn ich verstecken eine Ansicht in bestimmtem Szenario habe, muß ich schauen Sie sich um vieleif/else Kontrollen nur eine einzige Taste zu verstecken, denn wenn ich es andere Kontrolle an einem Ort verstecken wird es wieder sichtbar machen wirklich schwer zu pflegen.

Ich freue mich auf die besten Tipps zu diesem Thema von den Experten.

Antwort

1

Wenn Sie mit einer Menge von if/else im Code verstreut sind, sollten Sie vielleicht Polymorphismus in Ihrem Code verwenden.

Erstellen Sie eine abstrakte Klasse für die Aktivität und spezialisieren Sie sie dann für jeden bestimmten Typ.

Verwenden Sie das Factory-Methodenmuster zum Erstellen von Objekten dieser Hierarchie. Diese Methode verwendet die Parameter, um zu entscheiden, welche konkrete Klasse instanziiert wird, und initialisiert dann die zurückgegebene Instanz.

Verwenden Sie das Template Method-Muster, wenn für alle Unterklassen ein Algorithmus vorhanden ist, der jedoch einige offene Schritte enthält, die von jeder Klasse implementiert werden sollten.

Verwenden Sie das State/Strategy-Muster, wenn Sie polymorphen Code benötigen, der zur Laufzeit geändert werden kann.

+0

Ich denke, das ist der richtige Ansatz, da wir keine Aromen verwenden dürfen. – mallaudin

0

Erstellen Sie verschiedene XML für gleiche Layout und verwenden <include layout="@"/> Tag um das Layout zu erstellen, wird es, wenn/sonst senken und auch den Code liefern Wiederverwendbarkeit

0

Sie neue XML-Dateien erstellen müssen, in denen hat gemeinsame Ansichten für Ihre Aktivität und Fragment müssen dann Include-Tag in XML verwenden, um diese allgemeinen Ansichten in Ihre Aktivitäten zu integrieren & Fragmente xml.

1

Wenn Ihre separaten Apps geringfügige Anpassungen und Themenänderungen erfordern, aber tatsächlich die gleiche Basis-App sind, sind mehrere Varianten die richtige Wahl. Wenn beide Apps viele benutzerdefinierte Codeunterschiede erfordern, sollten Sie jedoch die Strategie für mehrere Varianten überdenken.

Beachten Sie auch den Unterschied zwischen Aromen und Build-Typen. Verwenden Sie Flavors für Situationen, in denen Sie im Play Store verschiedene Versionen derselben App benötigen, z. B. kostenlos und pro oder für Situationen, in denen Sie die gleiche App für mehrere Clients anpassen.

für Details http://www.androidauthority.com/building-multiple-flavors-android-app-706436

+0

Gibt es eine andere Möglichkeit, es richtig zu behandeln, außer Aromen? – mallaudin

+0

dann mit separaten Java-Klassen und XML-Dateien gehen. – Pavya

0

Ich glaube, Sie eigenes Layout für alle drei Arten von Konto erstellen sollte und Sie können PickLayout statische Klasse/Methode erstellen nach Typ um das Layout zu wählen

int getLayout(int type){ return layoutMap.get(type); }

, wenn Sie haben wiederverwendbare Layout dann sollten Sie include, merge verwenden oder Sie können ViewStub auch verwenden.

Wenn Sie eine Kette von if/else haben, dann sollten Sie Karte link verwenden, die frei skalierbar, fehleranfällig ist.

Und versuchen Sie, android suggested design-pattern zu folgen, das für das Schreiben des Testfalls auch nützlich sein wird.

Verwandte Themen