7

Eine Activity, die NavigationDrawer enthält, soll seine Fragmente jonglieren. Mein Problem ist, dass die Schublade auf allen möglichen Bildschirmen der Anwendung verfügbar sein muss, was meine einzige Aktivität MainActivity sehr mit Fragment-Callback-Code und verschiedenen Arten von Navigation/Geschäftslogik überladen macht.NavigationDrawer-Aktivität ist mit Fragment-Callbacks und Geschäftslogik der Anwendung überladen

Wenn die Anwendung wächst, wird es schwieriger, durch die Aktivität zu navigieren, und ich habe angefangen, über mögliche alternative Ansätze nachzudenken. Ein neuer Ansatz muss das gleiche visuelle Verhalten des Originals beibehalten und das Durcheinander beseitigen.

Abgesehen von Navigationsschubladenereignissen gibt es mehrere Fragmente, die auch Navigations-/Geschäftslogik enthalten, die auch von der MainActivity behandelt werden soll. Zum Beispiel könnte ein Fragment 3 oder mehr Schaltflächen enthalten, die andere Fragmente starten oder einige geschäftsrelevante Geschäftslogik ausführen würden.

Also ... die resultierende Menge an Listener-Interfaces, die von MainActivity implementiert wird, wächst und beträgt ab diesem Zeitpunkt 20. Sie könnten sich vorstellen, dass es nicht gut aussieht oder sich gut anfühlt.

Ich denke, ich könnte Dinge zu mehreren NavigationDrawer Aktivitäten entkoppeln, um die Wartung zu erleichtern. Es deutet auf einen größeren Ressourcenverbrauch und eine leichte Abweichung der visuellen Effekte hin, da neue Aktivitäten erst gestartet werden, nachdem die Schublade geschlossen wurde, im Gegensatz zu dem ursprünglichen Ansatz, der Fragmente sofort verändert.

Denken Sie, dass es eine schlechte Idee ist? Wie kann es verbessert werden? Oder gibt es eine bessere Lösung?

Danke.

UPD verfeinert die Beschreibung.

+0

Ich war in so eine Art Problem stecken und schrieb Frage hier> http://stackoverflow.com/questions/17779915/open-android-navigation-drawer-from-an-activity-class . Ich habe die Lösung nicht versucht, aber Sie können versuchen, wenn es funktioniert, ich bin mir nicht sicher, ob es funktioniert.Ich öffnete die Schublade nur aus wenigen Bildschirmen, die Fragmente sind. –

+0

Messepunkt. Was ist mit visuellen Effekten - soll ich erst nach dem Schließen der Schublade neue Aktivitäten zeigen? – midnight

+0

Sie haben Optionen auf Schublade, die klicken und startet eine neue Aktivität oder zeigt eines der Fragmente, es wird kein Problem sein, schließt es automatisch bei der Auswahl. –

Antwort

4

Sie sagten, Sie haben nur eine Aktivität. Also, ich nehme an, dass alle Bildschirme Fragmente in Ihrer App sind. Aus diesem Grund ist der NavDrawer standardmäßig in Ihrer App verfügbar.

Es sind keine verschiedenen Aktivitäten mit verschiedenen Implementierungen des NavDrawers erforderlich. Sie können eine BaseActivity verwenden, um die Implementierung des NavDrawers zu handhaben, und mit Vererbung können Sie dies in jeder beliebigen Aktivität verwenden, wenn Sie in Zukunft mehr implementieren möchten. Dies würde den OOP-Prinzipien folgen und zu einem saubereren Code führen. Außerdem sieht der NavDrawer in jeder Aktivität gleich aus und verhält sich auch so. Welchen Zweck hat es, ein Navigationsmenü für Ihre App zu haben?

Die Aufgabe der Aktivität, die die BaseActivity erweitert, besteht darin, die Transaktionen der Fragmente und die Kommunikation mit ihnen durch Rückrufe zu behandeln.

Damit ist die Navigation Ihrer App klar strukturiert und definitiv der richtige Weg.

Sie können diesem sehr netten vollständigen tutorial folgen, der so etwas tut. Es ist ein bisschen überwältigend auf den ersten Blick, aber Sie können die Grundidee bekommen.

+2

Dies ist es, was OP versucht, Ratschläge zu vermeiden. 'Es wird vorgeschlagen, ......... leichte visuelle Effekte Abweichung, da neue Aktivitäten werden nur gestartet werden, nachdem die Schublade im Gegensatz zu den ursprünglichen Ansatz, der Bruchstücke sofort ändert geschlossen wird. – Vikram

+0

@ user2558882 Meine Antwort bezieht sich nicht auf Auswahlen in der Schublade, die sowohl Aktivitäten als auch Fragmente starten können. Dies ist ohnehin zu vermeiden. Und das ist die einzige Situation, in der sich der visuelle Effekt oder das Verhalten der Schublade ändern würde. Ich sagte nur, wenn der Code in verschiedenen Klassen mehr strukturiert ist, wird der Code sauberer sein. –

3

Ich würde vorschlagen, nur eine NavigationDrawerDelegate-Klasse, die kümmert sich um die gesamte Navigationslogik und fügen Sie es zu Ihren Aktivitäten und nur zu delegieren. ein Beispiel ist schön gemacht here

Verwandte Themen