Join FlipAndroid.COM Telegram Group: https://t.me/joinchat/F_aqThGkhwcLzmI49vKAiw


¿Cuándo adjuntar / separar Android Fragments a mano?

He leído la documentación de Fragmentos en profundidad y no he visto ninguna referencia a los métodos FragmentTransaction.attach () o FragmentTransaction.detach () . Sin embargo, he encontrado múltiples tutoriales y demostraciones donde realmente los utilizan (como FragmentTabs Demo ). Mi pregunta es:

  1. En teoría, ¿cuándo se supone que debes fijar / desprender Fragmentos a mano ?
  2. ¿Qué sucede exactamente cuando un Fragmento está unido / separado? (Es creado / destruido? Pausado / reanudado? Etc?)
  3. ¿Es una buena práctica para adjuntar / separar sus fragmentos a mano ?

¡Gracias!

  • NestedScrollview + TextView + RecyclerView
  • Android InstantiationException con fragmento (es público)
  • OpcionesMenú de fragmentos en Viewpager mostrando los botones del otro
  • Android Studio y android.support.v4.app.Fragment: no se puede resolver el símbolo
  • Cambiando dinámicamente los fragmentos dentro de un host de fichas de fragmentos?
  • Acceder a la barra de acción desde dentro de un fragmento
  • ¿Cómo puedo mostrar un nuevo Fragmento dentro de una sola pestaña?
  • Android onClick en XML vs. OnClickListener
  • One Solution collect form web for “¿Cuándo adjuntar / separar Android Fragments a mano?”

    Fragmentos están siendo impulsados ​​por el equipo de desarrollo de Android como el camino a seguir. Hay razones para su introducción está documentada en varios lugares en la web que no voy a entrar aquí. Una razón para su introducción es permitir que el desarrollador encapsule funciones específicas de sus aplicaciones en módulos (casi) autónomos que se pueden cargar y descargar según corresponda y maximizar la amplia gama de pantallas de dispositivos disponibles para la plataforma Android.

    Desafortunadamente (en mi humilde opinión) hay algunas sutilezas que vienen con Fragmentos que pueden atrapar al desarrollador incautos (siendo yo uno de ellos). Aunque no puedo afirmar que soy una autoridad en Fragmentos, puedo transmitir lo que he descubierto al usarlos. Así que para responder a sus preguntas:

    No creo que haya reglas duras y rápidas cuando debes attach()/detach() fragmentos a mano. Sin embargo, puede haber una situación en la que podría desear separar un fragmento en lugar de reemplazarlo por otro. Sin embargo, esto no destruye el Fragmento como se indica en los documentos

    Quite el fragmento dado de la interfaz de usuario. Este es el mismo estado que cuando se coloca en la pila posterior: el fragmento se quita de la interfaz de usuario, sin embargo, su estado sigue siendo gestionado activamente por el gestor de fragmentos. Al entrar en este estado su jerarquía de vista es destruida.

    El objeto Fragmento se destruye pero es el elemento visible (si lo hay). Cuando el Fragmento se vuelve a conectar con attach() su jerarquía View se vuelve a crear ( docs ):

    Vuelva a conectar un fragmento después de haber sido previamente separado de la interfaz de usuario con desacoplamiento (Fragmento). Esto hace que su jerarquía de vista se vuelva a crear, se agregue a la interfaz de usuario y se muestre.

    Esto es, como he encontrado, no es particularmente útil si tu Fragmento en segundo plano necesita actualizar su jerarquía View, así que está inmediatamente al día cuando tu regresas a View. El resultado final es que usted consigue un 'feo' re-sorteo de su Fragmento. Me refiero a feo en el sentido de que le da a su aplicación la apariencia de apresuradamente y sin profesores re-dibujando a sí mismo en lugar de un aire mucho más deseable "listo para ir desde el aire".

    Si el mantenimiento de una interfaz de usuario Fragmento actualizada es crucial, entonces hay maneras de evitar este nuevo dibujo. En lugar de adjuntar y separar sus fragmentos, simplemente puede mostrar () y ocultar () ellos. Esto evita la recreación de la jerarquía View, pero hay que tener cuidado de que nada en tu vista intente volver a dibujarse mientras el fragmento está oculto; Esto se traducirá en una excepción (creo que es un tiempo desde que jugueteado con este material).

    No hay nada malo al adjuntar y separar fragmentos a mano y probablemente debería pensar en estos métodos como proporcionados por los desarrolladores de Android "just-in-case" que necesita para hacer tal cosa. Además, I image replace() llama a través de estos métodos más "atómicos" de todos modos.

    En cuanto a los fragmentos que se destruyen, obviamente, se destruyen cuando una aplicación se cierra, pero de lo contrario sospecho que sólo caen en la rutina de basura normal (pero no me cito en eso!). Es decir, si no hay referencias al objeto, entonces está marcado para destrucción.

    FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.