So behandeln Sie mehrere Fragmente für eine einzelne Aktivität

9

Ich habe kürzlich damit begonnen, Apps für mein Android-Gerät zu entwickeln. Was dieses Interesse für mich ausgelöst hat, ist, dass ich mit ein paar Arduinos herumspielte und die großartige Idee hatte, sie mit meinem Handy zu kommunizieren, wie eine Schnittstelle für irgendwelche Werte, die ich auf dem Arduino selbst gemessen habe. Jetzt könnte ich den einfachen Ausweg nehmen und eine öffentliche Quelle verwenden, um dies zu erreichen, aber es gibt nicht so viel zu lernen, und ich würde es gerne so haben, wie ich es möchte.

Nun nehme ich an, die erste Frage, die ich stellen muss, lautet: Würden mehrere Fragmente / einzelne Aktivität der beste Weg für mich sein, dies zu erreichen? Grundsätzlich möchte ich 1 Verbindung mit dem Arduino, ziehen Sie alle Werte, aber abhängig von der "Registerkarte", die ich ausgewählt habe möchte ich bestimmte Werte auf bestimmte Arten angezeigt werden. Ich entschied mich, jede Registerkarte zu einem anderen Fragment zu machen und nur die Werte auf andere Weise anzuzeigen. Wie ich schon sagte, ich fange gerade an, Android-Entwicklungserfahrung zu haben, also nicht viel, um diese Wahl abzustützen.

Wenn ich also auf diese Idee mit mehreren Fragmenten fixiert bin, habe ich:

  1. Mehrere Fragment.xml-Dateien erstellt
  2. Definierte eine Klasse für jede separate Ansicht
  3. Eine Liste erstellt, um verfügbare Fragmente anzuzeigen
  4. Instanziiertes und angezeigtes Fragment, wenn ausgewählt

Also im Wesentlichen mein onMenuItemSelect sah so aus.

%Vor%

Der obige Code hat funktioniert, er hat getan, was ich wollte, ohne Probleme. Ich mag das aber nicht wirklich, denn für jedes einzelne Fragment, das ich hinzufügen wollte, müsste ich dem Switch einen neuen Fall hinzufügen. Auch dies instanziiert jedes Mal ein neues Fragment, selbst wenn eines bereits erstellt wurde. Ist das ein Problem?

Das größte Problem, das ich damit hatte, ist, dass es nicht einfach zu skalieren ist. Für 2-3 Fragmente ist das nicht der schlechteste Weg (in meinen Augen). Ich möchte in der Lage sein, so viele Fragmente zu haben, wie ich möchte, ohne einen individuellen Fall für jeden im Schalter. Also, was ich gemacht habe, wurde eine FragmentList erstellt, um eine einzelne Instanz von jedem meiner Fragmente zu halten.

%Vor%

Und diese Methode hat auch funktioniert. Ich könnte es bekommen, um alle meine Fragmente anzuzeigen, ohne jedes Fragment jedes Mal erneut instanziieren zu müssen. Ich glaube, das tut, was ich will, es skaliert ziemlich gut (besser als ein Switch / Case IMO). Das Problem, das ich jetzt habe, ist, dass alles verrückt wird, wenn ich die Orientierung ändere. Bis jetzt habe ich nur den Hochformat-Modus getestet, ich kann keine meiner Fragmente sehen, wenn ich sie in anderer Ausrichtung anwähle. Ich kann es in beiden Richtungen starten, und es funktioniert, aber wenn ich es während der Laufzeit ändere, kann ich nur das eine Fragment sehen, das ich geöffnet hatte, als ich die Orientierung änderte.

Nun wird jedes Fragment "onCreateView" aufgerufen, nur dass das Display nicht angezeigt wird. Ich glaube, ich habe mich darauf beschränkt, dass es nicht an die neue Aktivität angehängt wird, die aus der Orientierungsänderung entsteht. Kann ich Fragmente, die bereits erstellt wurden, wieder an eine neue Aktivität anhängen?

Zusammenfassend sind die Fragen, die ich habe:

  1. Ist dieses Modell sogar ein guter Weg für meine Bewerbung?
  2. Gibt es einen vernünftigen Weg, mit Fragmenten umzugehen, die gut skalieren? Kippen scheinen irgendwelche Beispiele zu finden.
  3. Verwendet jedes Mal, wenn ich eine andere Registerkarte öffne, ein neues MyFragment () vernünftiger Weg, dies zu erreichen?
  4. Ist meine Art, meine Fragmente in einer Liste zu speichern, ein sinnvoller Weg Handle sie?
  5. Wie füge ich ein Fragment nach einer erneuten Aktivität wieder an die neue Aktivität an? Orientierungsänderung?

Danke für Ihre Zeit.

* Ich musste den ganzen Code im laufenden Betrieb eingeben, weil ich aus irgendeinem Grund meinen C / P-Code nicht korrekt formatieren konnte.

    
Greg 12.02.2015, 07:24
quelle

1 Antwort

-1

Ich glaube, es ist eine gute Wahl, Fragmente zu verwenden und mit diesem Beispiel ...

Sie sollten auf jeden Fall einige "Adapter" überschreiben, um alle Transaktionen einfacher zu behandeln ...

Überprüfen Sie hier auf das Orientierungsproblem ...

    
panos stavrianos 11.07.2016 13:46
quelle

Tags und Links