Cómo manejar múltiples fragmentos para una sola actividad

Recientemente comencé a echar un vistazo al desarrollo de aplicaciones para mi dispositivo Android. Lo que comenzó este interés para mí es que estaba jugando con algunos arduinos, tuve la gran idea de hacer que se comunicaran con mi teléfono, como una interfaz para cualquier valor que esté midiendo en el arduino. Ahora podría tomar el camino más fácil y usar una fuente pública para lograr esto, pero no hay mucho que aprender de esa manera, y me gustaría que lo quisiera.

Ahora supongo que la primera pregunta que debo hacer es: ¿serían múltiples fragmentos / actividad única la mejor manera de lograr esto? Básicamente, quiero 1 conexión al arduino, extraer todos los valores, pero dependiendo de la "pestaña" que he seleccionado, quiero que ciertos valores se muestren de ciertas maneras. Decidí hacer de cada pestaña un fragmento diferente y solo mostrar los valores de diferentes maneras. Como dije, recién estoy comenzando la experiencia de desarrollo de Android, así que no tengo mucho en qué basar esta elección.

Así que, obsesionado con esta idea de fragmentos múltiples, tengo:

Se crearon varios archivos Fragment.xmlDefinió una clase para cada vista separadaCreó una lista para mostrar los fragmentos disponiblesFragmento instanciado y mostrado cuando se selecciona

Así que esencialmente mi onMenuItemSelect se veía así.

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;
}

El código anterior funcionó, hizo lo que quería sin ningún problema. Sin embargo, realmente no me gusta esto, porque para todos y cada uno de los Fragmentos que quería agregar, necesitaría agregar un nuevo caso al conmutador. Además, esto crea instancias de un nuevo fragmento cada vez, incluso si ya se ha creado uno. ¿Es eso un problema?

El mayor problema que tuve con él es que no es el más fácil de escalar. Para 2-3 fragmentos, esta no es la peor forma de manejarlo (en mis ojos). Quiero poder tener tantos fragmentos que quiera sin un caso individual para cada uno en el conmutador. Entonces, lo que hice fue crear una lista de fragmentos para contener una sola instancia de cada uno de mis fragmentos.

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();
}

Y este método también funcionó. Podría hacer que muestre todos mis fragmentos, sin tener que volver a crear cada fragmento cada vez. Creo que esto hace lo que quiero que haga, se escala bastante bien (mejor que un interruptor / caso IMO). El problema que tengo ahora es que todo se vuelve loco cuando cambio de orientación. Hasta ahora solo estaba probando el modo vertical, no puedo ver ninguno de mis fragmentos cuando los selecciono en otra orientación. Puedo iniciarlo en cualquier orientación, y funciona, pero cuando lo cambio durante el tiempo de ejecución, solo puedo ver el fragmento que tenía abierto cuando cambié de orientación.

Ahora, se llama a cada fragmento "onCreateView", es solo que la pantalla no se muestra. Creo que lo he reducido a que no se está adjuntando a la nueva actividad creada a partir del cambio de orientación. ¿Hay alguna forma de volver a unir fragmentos que ya están creados para una nueva actividad?

En resumen, las preguntas que tengo son:

¿Es este modelo incluso una buena manera para mi aplicación?¿Hay alguna forma decente de manejar fragmentos que se escale bien? Parece que no puedo encontrar ningún ejemplo.¿Usar un '' nuevo MyFragment () '' cada vez que abro una pestaña diferente es una forma razonable de lograr esto?¿Es mi forma de almacenar mis Fragmentos en una lista una forma razonable de manejarlos?¿Cómo vuelvo a unir un fragmento a la nueva Actividad después de un cambio de orientación?

Gracias por tu tiempo.

* Tuve que escribir todo este código sobre la marcha porque, por alguna razón, no pude hacer que mi código C / P se formateara correctamente.

Respuestas a la pregunta(1)

Su respuesta a la pregunta