Wie man mit mehreren Fragmenten für eine einzelne Aktivität umgeht

Ich habe vor kurzem 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 herumgespielt habe, die die großartige Idee hatten, sie mit meinem Telefon zu kommunizieren, als Schnittstelle für alle Werte, die ich auf dem Arduino selbst messe. Jetzt könnte ich den einfachen Ausweg nehmen und eine öffentliche Quelle nutzen, um dies zu erreichen, aber es gibt nicht so viel zu lernen, und ich würde es so mögen, wie ich es möchte.

Nun, ich nehme an, die erste Frage, die ich stellen muss, ist, ob mehrere Fragmente / einzelne Aktivität der beste Weg für mich sind, dies zu erreichen. Grundsätzlich möchte ich 1 Verbindung zum Arduino, ziehen Sie alle Werte, aber abhängig von der "Registerkarte", die ich ausgewählt habe, möchte ich bestimmte Werte auf bestimmte Weise angezeigt. Ich habe mich entschieden, jedes Register als ein anderes Fragment zu definieren und die Werte auf unterschiedliche Weise anzuzeigen. Wie ich schon sagte, ich fange gerade erst mit der Android-Entwicklung a

So fixiert auf diese Idee mit mehreren Fragmenten, die ich habe:

Erstellte mehrere Fragment.xml-DateienDefinierte eine Klasse für jede einzelne AnsichtEine Liste erstellt, um verfügbare Fragmente anzuzeigenInstantiertes und angezeigtes Fragment bei Auswahl von

Im Wesentlichen sah mein onMenuItemSelect so aus.

FragmentTransaction FT = getFragmentManager.beginTransaction();
switch(position){
    case 1:
        FT.replace(R.id.fragment_container, new MyFragment()).commit();
        break;
    case 2:
        FT.replace(R.id.fragment_container, new MySecondFragment()).commit();
        break;
}

Der obige Code hat funktioniert, er hat ohne Probleme das getan, was ich wollte. Ich mag das allerdings nicht wirklich, weil ich für jedes Fragment, das ich hinzufügen wollte, einen neuen Fall zum Schalter hinzufügen müsste. Dies instanziiert auch 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 am einfachsten zu skalieren ist. Für 2-3 Fragmente ist dies nicht die schlechteste Art, damit umzugehen (in meinen Augen). Ich möchte in der Lage sein, so viele Fragmente zu haben, wie ich möchte, ohne dass für jedes Fragment im Switch ein Einzelfall vorliegt. Also habe ich eine Fragmentliste erstellt, in der sich jeweils eine Instanz meines Fragments befindet.

List<Fragment> fragmentList;

private void populateFragmentList();{
    fragmentList = new ArrayList<Fragment>();
    fragmentList.add(new HomeFrag());
    fragmentList.add(new BluetoothFragment());
    fragmentList.add(new USBFragment());
    fragmentList.add(new RCInfoFragment());
    fragmentList.add(new ControllerFragment());
    fragmentList.add(new FingerCordsFrag());
}
public void onMenuItemSelect(int position, int curPosition){
    if(fragmentList.get(position).isAdded()){
       getFragmentManager().beginTransaction().show(fragmentList.get(postition))
        .hide(fragmentList.get(curPosition)).commit();
    }
    else
        getFragmentManager().beginTransaction().add(R.id.fragment_container, fragmentList.get(position)).show(fragmentList.get(position)).hide(fragmentList.get(curPosition)).commit();
}

Und diese Methode hat auch funktioniert. Ich könnte es dazu bringen, alle meine Fragmente anzuzeigen, ohne jedes Fragment jedes Mal neu instanziieren zu müssen. Ich glaube, das macht, was ich will, es skaliert ziemlich gut (besser als ein Schalter / Fall IMO). Das Problem, das ich jetzt habe, ist, dass alles verrückt wird, wenn ich die Ausrichtung ändere. Bisher habe ich nur den Hochformatmodus getestet. Ich kann keine meiner Fragmente anzeigen, wenn ich sie in einer anderen Ausrichtung auswähle. Ich kann es in beiden Richtungen starten und es funktioniert, aber wenn ich es zur Laufzeit ändere, kann ich nur das Fragment sehen, das ich geöffnet hatte, als ich die Ausrichtung änderte.

Nun, jedes Fragment "onCreateView" wird aufgerufen, es ist nur so, dass die Anzeige nicht angezeigt wird. Ich glaube, ich habe es eingegrenzt, um nicht an die neue Aktivität gebunden zu sein, die durch die Orientierungsänderung erzeugt wurde. Gibt es sowieso kann ich Fragmente, die bereits erstellt wurden, einer neuen Aktivität zuordnen.

Zusammenfassend sind die Fragen, die ich habe:

Ist dieses Modell überhaupt ein guter Weg für meine Bewerbung? Gibt es eine anständige Möglichkeit, mit gut skalierbaren Fragmenten umzugehen? Ich kann anscheinend keine Beispiele finden.Verwende ich ein '' neues MyFragment () '' jedes Mal, wenn ich einen anderen Tab öffne?Ist meine Art, meine Fragmente in einer Liste zu speichern, eine vernünftige Art, damit umzugehen?Wie kann ich nach einer Änderung der Ausrichtung ein Fragment wieder an die neue Aktivität anhängen?

Vielen Dank für Ihre Zeit

* Ich musste den gesamten Code direkt eingeben, da ich aus irgendeinem Grund meinen C / P-Code nicht korrekt formatieren konnte.