9

Nehmen wir zum Beispiel die App, an der ich gerade arbeite: - sie hat einen navigationDrawer mit mehreren Elementen; Hier gibt es zwei mir, welches Interesse für jetzt, sie ich werde NavigationDrawer mit Aktivitäten vs. NavigationDrawer mit Fragmenten

  • beide X und Y

    X und Y. rufen, wenn darauf geklickt wird, ein Fragment zeigt eine Liste von x-Elementen oder y-Elementen enthält

  • Auswahl und x oder y Listenelement zeigt ein neues Fragment an, in dem ich Informationen über das ausgewählte Element anzeigen kann; die Ansicht Fragmente sind für x und y Elemente

  • in der Ansicht Fragment kann ich wählen, das spezifische Element zu bearbeiten, die

    bearbeitet Fragment bringt

Der Fragment-Ansatz funktioniert, aber es hat mich eine Weile, um die Navigation zwischen den Fragmenten zu verwalten. Auch werde ich wahrscheinlich einige neue Gegenstände in der Schublade mit X und Y hinzufügen müssen. Meine Haupttätigkeit, in der ich die Schublade habe und ich die Fragmentschaltung mache, ist schon ziemlich dicht, was mich zu meiner Frage bringt: sollte Ich wechsle von Fragmenten zu Aktivitäten? Ich habe darüber nachgedacht, eine neue Aktivität zu starten, wenn ein Schubladenelement ausgewählt ist, und die mit dem ausgewählten Element in dieser Aktivität verknüpften Listen-/Ansichts-/Bearbeitungsfragmente zu behandeln, anstatt alle Fragmente für alle Elemente in einer einzelnen Aktivität zu bearbeiten.

Ist es eine gute Idee? Ist es schlechtes Design?

+0

Warum versuchst du ein Fahrrad zu erfinden - es gibt einen beschriebenen Weg, wie man das macht und viele Beispiele. Heutzutage haben Sie NavigationView, die Ihnen Material-Design out-of-Box bietet. Ihre Hauptaktivität sollte Navigation und Status verwalten. Jedes Fragment sollte Ihnen eine logische Trennung geben. Wenn Sie mehr als 100 Codezeilen in Ihrer Aktivität haben, könnte das bedeuten, dass Sie etwas falsch machen. –

+0

Danke für die Antwort. Ich habe gerade angefangen, in NavigationView zu suchen und werde mich wahrscheinlich auch um die Hauptaktivität kümmern. Danke noch einmal. –

Antwort

8

Ich war in einem ähnlichen Boot und ich verwendete Activities-Methode, auf diese Weise habe ich jede Aktivität mit einer Gruppe von Fragmenten für eine bestimmte Nav klicken Sie auf die NavigationView. Natürlich verwende ich NavigationView, aber die Verwaltung all dieser Fragmente mit nur einer MainActivity ist wirklich eine schmerzhafte Aufgabe.

Ich bevorzuge lieber EachActivity Verwaltung ihrer eigenen Fragmente, wenn wir auf ein Nav-Element klicken. Dies gibt mir eine bessere Leistung, da ich mich nicht um den Lebenszyklus von so vielen Fragmenten kümmern muss und es ist BackStack und Hinzufügen/Entfernen/Zeigen/Verbergen der Hölle.

Ich habe die folgende SO-Frage verwendet, um eine BaseActivity, die den NavigationDrawer implementiert, zu verwenden und sie mit allen anderen Aktivitäten zu teilen. Die wahre Magie ist, dass es keinen Code dupliziert, oder es ist nicht nur eine einfache alte Vererbungstechnik.

Here's the link, do check it out

ich verwenden, um dieses Verfahren in zwei mein Projekt und es ist sehr gut läuft und ich muß nicht mit dem Fragmente Management beschäftigt Recht von Anfang an.

+0

Vielen Dank für Ihre Antwort. Am Ende habe ich das selbe gemacht, da es sehr schwierig für mich war, in einer einzigen Aktivität Fragmente zu verwalten, die völlig unterschiedliche Zwecke hatten. Ich endete mit einer BaseActivity, wie Sie es erwähnt haben, und einer spezialisierten Aktivität, die das vorherige für jede Gruppe von Fragmenten (Listenfragmente, Editfragmente, View) erweitert. Fragmente) –

+0

Ich bin froh, dass Sie Ihre Lösung font, Sie können dies als Ihre Antwort akzeptieren;) – Rinav

0

Zunächst ist die Verwaltung der Navigation zwischen Fragmenten nicht schwierig. Sie können google's tutorial überprüfen. Ich kann Ihnen einige Änderungen vorschlagen, wenn Sie Ihren Code schreiben

Ich denke, es ist schlechtes Design aus zwei Gründen ist

  • Menge Code Nacharbeit
  • Wenn Sie Ihr Navigationsmuster ändern möchten Tabs zu sagen, es kann nicht leicht gemacht werden.
+0

Sie haben einen gültigen Punkt. Danke für den Link (obwohl ich schon oft dort war) und danke für die Antwort. –

3

Ich habe folgende Punkte vorlegen:

  1. Der Fragment-Ansatz viel besser ist. Sie sollten Fragmente für bessere UI-Erfahrung für den Benutzer verwenden.

  2. wie dieses Denken Sie Ihren Bildschirm als Korb von Informationen vorstellen, und wenn Sie einen anderen Korb haben (i, e einen anderen Bildschirm), mit dem viele Daten wird hin und her, dann übertragen werden müssen, gemäß für mich ist es viel besser, Fragmente für die beiden Körbe zusammen mit einer Containeraktivität zu verwenden. Und natürlich kann es mehr als zwei Körbe geben.

  3. Es gibt keine feste Regel, die Sie nur Fragmente oder Aktivitäten verwenden sollten, aber Google sagt, dass es viel besser ist, Fragmente zu verwenden, wo immer es möglich ist.

  4. Im Allgemeinen verwenden Entwickler Fragmente Gruppe zugehöriger Logik zusammen und es ist viel besser, es auf diese Weise zu tun, wie es eine logische Gruppierung von zur Verfügung stellt, was Sie zu tun versuchen.

  5. Es ist auch einfach Java-Datenobjekte unter Fragmente über den Behälter Aktivität und mit Hilfe von Interfaces passieren. Dies gilt auch als sehr modularer Ansatz.

Der Rest hängt davon ab, wie Sie den Fluss Ihrer Anwendung definieren möchten. Ich denke, die Verwendung von Fragmenten ist ein viel besserer Ansatz in Ihrem Szenario. Verwenden Sie Containeraktivitäten, wenn Sie denken, dass sich die zugehörige Logik drastisch geändert hat.

+0

Ich schätze Ihre Hilfe sehr. Ich werde den Fragmentansatz beibehalten und den Code, den ich bis jetzt geschrieben habe, überarbeiten, um eine bessere Kommunikation zwischen Fragmenten zu ermöglichen. Danke vielmals! –