¿Por qué fragmentos y cuándo utilizar fragmentos en lugar de actividades?

519
android developer 2012-05-07 21:23.

En Android API 11+, Google ha lanzado una nueva clase llamada Fragment.

En los videos, Google sugiere que siempre que sea posible ( enlace1 , enlace2 ), deberíamos usar fragmentos en lugar de actividades, pero no explicaron exactamente por qué.

¿Cuál es el propósito de los fragmentos y algunos posibles usos de ellos (aparte de algunos ejemplos de IU que se pueden lograr fácilmente con vistas / diseños simples)?

Mi pregunta es sobre fragmentos:

  1. ¿Cuáles son los propósitos de usar un fragmento?
  2. ¿Cuáles son las ventajas y desventajas de usar fragmentos en comparación con el uso de actividades / vistas / diseños?

Preguntas adicionales:

  1. ¿Puede dar algunos usos realmente interesantes a los fragmentos? ¿Cosas que Google no mencionó en sus videos?
  2. ¿Cuál es la mejor forma de comunicarse entre los fragmentos y las actividades que los contienen?
  3. ¿Cuáles son las cosas más importantes que debe recordar cuando usa fragmentos? ¿Algún consejo y advertencia de su experiencia?

11 answers

296
Glenn Bech 2012-05-10 02:11.

# 1 y # 2 ¿Cuáles son los propósitos de usar un fragmento y cuáles son las ventajas y desventajas de usar fragmentos en comparación con el uso de actividades / vistas / diseños?

Los fragmentos son la solución de Android para crear interfaces de usuario reutilizables. Puede lograr algunas de las mismas cosas usando actividades y diseños (por ejemplo, usando incluye). Sin embargo; los fragmentos están conectados a la API de Android, desde HoneyComb y versiones posteriores. Déjame explicarlo;

  • El ActionBar. Si desea que las pestañas estén arriba para navegar por su aplicación, verá rápidamente que la ActionBar.TabListenerinterfaz le brinda FragmentTransactionun argumento de entrada para el onTabSelectedmétodo. Probablemente podría ignorar esto y hacer otra cosa e inteligente, pero estaría trabajando contra la API, no con ella.

  • Las FragmentManagermanijas se «vuelven» para ti de una manera muy inteligente. Volver no significa volver a la última actividad, como ocurre con las actividades habituales. Significa volver al estado del fragmento anterior.

  • Puede usar el cool ViewPagercon a FragmentPagerAdapterpara crear interfaces de deslizamiento. El FragmentPagerAdaptercódigo es mucho más limpio que un adaptador normal y controla las instancias de los fragmentos individuales.

  • Su vida será mucho más fácil si usa Fragments cuando intente crear aplicaciones para teléfonos y tabletas. Dado que los fragmentos están tan vinculados con las API de Honeycomb +, también querrá usarlos en teléfonos para reutilizar el código. Ahí es donde la biblioteca de compatibilidad resulta útil.

  • Incluso podría y debería usar fragmentos para aplicaciones destinadas solo a teléfonos. Si tiene en mente la portabilidad. Utilizo ActionBarSherlocky las bibliotecas de compatibilidad para crear aplicaciones de "apariencia ICS", que se ven iguales desde la versión 1.6. Obtiene las últimas funciones como ActionBar, con pestañas, desbordamiento, barra de acción dividida, visor, etc.

Bono 2

La mejor forma de comunicarse entre fragmentos son las intenciones. Cuando presiona algo en un Fragmento, normalmente llamaría StartActivity()con datos en él. La intención se transmite a todos los fragmentos de la actividad que inicias.

74
Nikolay Elenkov 2012-05-07 21:37.

No estoy seguro de a qué video (s) te refieres, pero dudo que digan que deberías usar fragmentos en lugar de actividades, porque no son directamente intercambiables. En realidad, hay una entrada bastante detallada en la Guía para desarrolladores, considere leerla para obtener más detalles.

En resumen, los fragmentos viven dentro de las actividades y cada actividad puede albergar muchos fragmentos. Al igual que las actividades, tienen un ciclo de vida específico, a diferencia de las actividades, no son componentes de aplicaciones de nivel superior. Las ventajas de los fragmentos incluyen la reutilización de código y la modularidad (por ejemplo, usar la misma vista de lista en muchas actividades), incluida la capacidad de construir interfaces de múltiples paneles (principalmente útil en tabletas). La principal desventaja es (alguna) complejidad adicional. Por lo general, puede lograr lo mismo con vistas (personalizadas) de una manera no estándar y menos robusta.

51
mani 2014-05-24 03:26.

Un Fragmento es una parte de la interfaz de usuario o el comportamiento de una aplicación que se puede colocar en una Actividad que permite un diseño de actividad más modular. No estará mal si decimos que un fragmento es una especie de subactividad.

Los siguientes son puntos importantes sobre un fragmento:

  1. Un fragmento tiene su propio diseño y su propio comportamiento con sus propias devoluciones de llamada del ciclo de vida.

  2. Puede agregar o eliminar fragmentos en una actividad mientras la actividad se está ejecutando.

  3. Puede combinar varios fragmentos en una sola actividad para crear una interfaz de usuario de varios paneles.

  4. Un fragmento se puede utilizar en múltiples actividades.

  5. El ciclo de vida del fragmento está estrechamente relacionado con el ciclo de vida de su actividad de host.

  6. Cuando la actividad está en pausa, también se detendrán todos los fragmentos disponibles en la actividad.

  7. Un fragmento puede implementar un comportamiento que no tiene ningún componente de interfaz de usuario.

  8. Se agregaron fragmentos a la API de Android en Android 3 (Honeycomb) con la versión 11 de la API.

Para obtener más detalles, visite el sitio oficial, Fragmentos .

22
Kaveesh Kanwal 2015-09-04 18:23.

Esta es información importante que encontré en fragmentos:

Históricamente, cada pantalla en una aplicación de Android se implementó como una actividad separada. Esto crea un desafío al pasar información entre pantallas porque el mecanismo de intención de Android no permite pasar un tipo de referencia (es decir, un objeto) directamente entre actividades. En su lugar, el objeto debe ser serializado o debe estar disponible una referencia accesible globalmente.

Al hacer de cada pantalla un Fragmento separado, este dolor de cabeza por el paso de datos se evita por completo. Los fragmentos siempre existen dentro del contexto de una Actividad determinada y siempre pueden acceder a esa Actividad. Al almacenar la información de interés dentro de la Actividad, el Fragmento de cada pantalla puede simplemente acceder a la referencia del objeto a través de la Actividad.

Fuente: https://www.pluralsight.com/blog/software-development/android-fragments

16
Chandrima Bhattacharjee 2018-06-29 13:14.

Las actividades son los componentes de pantalla completa en la aplicación con la barra de herramientas, todo lo demás son preferiblemente Fragmentos. Una actividad principal de pantalla completa con una barra de herramientas puede tener varios paneles, páginas desplazables, diálogos, etc. (todos fragmentos), a todos los cuales se puede acceder desde el padre y comunicarse a través del padre.

Ejemplo:

Actividad A, Actividad B, Actividad C:

  • Todas las actividades deben tener el mismo código repetido, para mostrar una barra de herramientas básica, por ejemplo, o heredar de una actividad principal (se vuelve engorroso de administrar).
  • Para pasar de una actividad a otra, todas deben estar en la memoria (sobrecarga) o una debe destruirse para que la otra se abra.
  • La comunicación entre actividades se puede realizar a través de Intents.

vs

Actividad A, Fragmento 1, Fragmento 2, Fragmento 3:

  • Sin repetición de código, todas las pantallas tienen barras de herramientas, etc. de esa actividad.
  • Varias formas de pasar de un fragmento al siguiente: ver buscapersonas, paneles múltiples, etc.
  • La actividad tiene la mayoría de los datos, por lo que se necesita una comunicación mínima entre fragmentos. Si aún es necesario, se puede hacer a través de interfaces fácilmente.
  • Los fragmentos no necesitan ser de pantalla completa, mucha flexibilidad para diseñarlos.
  • Los fragmentos no necesitan inflar el diseño si las vistas no son necesarias.
  • Varias actividades pueden usar el mismo fragmento.
8
Nithin Baby 2014-12-16 06:59.

Los fragmentos son de especial utilidad en algunos casos, como cuando queremos mantener un cajón de navegación en todas nuestras páginas. Puede inflar un diseño de marco con cualquier fragmento que desee y seguir teniendo acceso al cajón de navegación.

Si hubiera utilizado una actividad, habría tenido que mantener el cajón en todas las actividades, lo que hace que el código sea redundante. Este es un uso interesante de un fragmento.

Soy nuevo en Android y todavía creo que un fragmento es útil de esta manera.

5
einschnaehkeee 2015-05-17 22:16.

Sé que esto ya se discutió a muerte, pero me gustaría agregar algunos puntos más:

  • Los fragmentos se pueden usar para completar mensajes de correo electrónico Menuy pueden manejar los MenuItemclics por sí mismos. Por lo tanto, brinda más opciones de modulación para sus actividades. Puede hacer cosas de ContextualActionBar y demás sin que su Actividad lo sepa y básicamente puede desacoplarlas de las cosas básicas que maneja su Actividad (Navegación / Configuración / Acerca de).

  • Un Frag padre con Frags hijo puede brindarle más opciones para modular sus componentes. Por ejemplo, puede intercambiar fácilmente Frags, poner nuevos Frags dentro de un Pager o eliminarlos, reorganizarlos. Todo sin que tu Actividad sepa nada al respecto, solo se centra en las cosas de nivel superior.

1
Prithiv Dharmaraj 2017-09-05 01:50.

1.¿Fines de usar un fragmento?

  • Respuesta:
    1. Manejo de las diferencias en el factor de forma del dispositivo.
    2. Pasar información entre pantallas de aplicaciones.
    3. Organización de la interfaz de usuario.
    4. Metáforas avanzadas de IU.
0
maniix 2016-05-16 02:46.

Los fragmentos viven dentro de la actividad y tienen:

  • su propio ciclo de vida
  • su propio diseño
  • sus propios fragmentos secundarios y etc.

Piense en Fragments como una subactividad de la actividad principal a la que pertenece, no puede existir por sí misma y se puede llamar / reutilizar una y otra vez. Espero que esto ayude :)

0
superkytoz 2015-12-15 01:15.

Un fragmento vive dentro de una actividad, mientras que una actividad vive por sí misma.

0
Meenohara 2020-07-07 23:47.

Agregando a las respuestas anteriores, lo diré usando el ejemplo de una aplicación que lancé en Play Store.

Esta fue la primera aplicación que desarrollé cuando aprendí a usar Android, por lo tanto, solo trabajé con actividades. Creo que hay varias páginas de actividades. La mayoría de ellas tenían contenido que podía reutilizarse en otras páginas, pero terminé con una página de actividad separada durante casi cada clic en la aplicación. Una vez que aprendí los fragmentos, me di cuenta de que todos los reutilizables podían implementarse y separar fragmentos y usarse con muy pocas actividades. Es posible que mi usuario no vea ninguna diferencia, pero se puede hacer lo mismo con un código menor, además de que los fragmentos son livianos, además de la reutilización y modularidad que ofrecen.

Related questions

MORE COOL STUFF

La estrella de HGTV, Christina Hall, revela que tiene 'envenenamiento por mercurio y plomo' probablemente por voltear 'casas asquerosas'

La estrella de HGTV, Christina Hall, revela que tiene 'envenenamiento por mercurio y plomo' probablemente por voltear 'casas asquerosas'

La estrella de HGTV, Christina Hall, revela que le diagnosticaron envenenamiento por mercurio y plomo, probablemente debido a su trabajo como manipuladora de casas.

La estrella de 'Love Is Blind' Brennon Lemieux responde a los cargos de violencia doméstica

La estrella de 'Love Is Blind' Brennon Lemieux responde a los cargos de violencia doméstica

Recientemente salió a la luz un informe policial que acusa a la estrella de 'Love Is Blind', Brennon, de violencia doméstica. Ahora, Brennon ha respondido a los reclamos.

Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia Judd en un momento festivo de pánico

Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia Judd en un momento festivo de pánico

Conozca cómo Wynonna Judd se dio cuenta de que ahora es la matriarca de la familia mientras organizaba la primera celebración de Acción de Gracias desde que murió su madre, Naomi Judd.

Experto en lenguaje corporal explica los 'paralelos' entre Kate Middleton y la princesa Diana

Experto en lenguaje corporal explica los 'paralelos' entre Kate Middleton y la princesa Diana

Descubra por qué un destacado experto en lenguaje corporal cree que es fácil trazar "tales paralelismos" entre la princesa Kate Middleton y la princesa Diana.

Los láseres arrojan luz sobre por qué necesita cerrar la tapa antes de descargar

Los láseres arrojan luz sobre por qué necesita cerrar la tapa antes de descargar

Los inodoros arrojan columnas de aerosol invisibles con cada descarga. ¿Como sabemos? La prueba fue capturada por láseres de alta potencia.

The Secrets of Airline Travel Quiz

The Secrets of Airline Travel Quiz

Air travel is far more than getting from point A to point B safely. How much do you know about the million little details that go into flying on airplanes?

Where in the World Are You? Take our GeoGuesser Quiz

Where in the World Are You? Take our GeoGuesser Quiz

The world is a huge place, yet some GeoGuessr players know locations in mere seconds. Are you one of GeoGuessr's gifted elite? Take our quiz to find out!

¿Caduca el repelente de insectos?

¿Caduca el repelente de insectos?

¿Sigue siendo efectivo ese lote de repelente de insectos que te quedó del verano pasado? Si es así, ¿por cuánto tiempo?

Estados Unidos podría evitarse el horror del nuevo gran horneado británico

Estados Unidos podría evitarse el horror del nuevo gran horneado británico

Si este tráiler de pesadilla de la temporada más reciente de Great British Bake Off te asustó y te hizo no volver a ver el programa, es posible que tengas suerte: PBS no ha decidido si se transmitirá o no la última temporada en los Estados Unidos. actualización, para aquellos que no siguen sin aliento este tipo de drama de nicho: el presentador Paul Hollywood y la hermosa carpa llena de batidoras de colores pastel y cuadros se trasladaron de la BBC al Canal 4; Mary Berry, Sue Perkins y Mel Giedroyc renunciaron.

Atún como Oh, Hello llega a Netflix

Atún como Oh, Hello llega a Netflix

Foto: Netflix Oh, Hello On Broadway (Netflix): Después de llegar a Broadway el año pasado, los dos locos del Upper West Side interpretados por John Mulaney y Nick Kroll finalmente llegaron a Netflix. El especial consta del espectáculo en el escenario, algunos momentos entre bastidores y un invitado muy especial de “Too Much Tuna”.

Actualice a un Sonicare por tan solo $ 30

Actualice a un Sonicare por tan solo $ 30

¿Quiere probar un cepillo de dientes Sonicare sin gastar mucho dinero en uno de sus modelos favoritos de gama alta? Puede comprar un kit de la Serie 2 o Serie 3 por tan solo $ 30 hoy en Amazon. Haga clic aquí para ver la lista completa de modelos elegibles y tenga en cuenta que se descontarán $ 10 adicionales en su carrito.

Ponle una tapa. En realidad, ponle una tapa a todo. Consigue 12 tapas de cocina elásticas de silicona por $14. [Exclusivo]

Ponle una tapa. En realidad, ponle una tapa a todo. Consigue 12 tapas de cocina elásticas de silicona por $14. [Exclusivo]

Tapas elásticas de silicona de Tomorrow's Kitchen, paquete de 12 | $14 | Amazonas | Código promocional 20OFFKINJALids son básicamente los calcetines de la cocina; siempre perdiéndose, dejando contenedores huérfanos que nunca podrán volver a cerrarse. Pero, ¿y si sus tapas pudieran estirarse y adaptarse a todos los recipientes, ollas, sartenes e incluso frutas en rodajas grandes que sobran? Nunca más tendrás que preocuparte por perder esa tapa tan específica.

Patinaje artístico de EE. UU. 'frustrado' por falta de decisión final en evento por equipos, pide una decisión justa

Patinaje artístico de EE. UU. 'frustrado' por falta de decisión final en evento por equipos, pide una decisión justa

El equipo está a la espera de las medallas que ganó en los Juegos Olímpicos de Invierno de 2022 en Beijing, ya que se está resolviendo un caso de dopaje que involucra a la patinadora artística rusa Kamila Valieva.

Los compradores de Amazon dicen que duermen 'como un bebé mimado' gracias a estas fundas de almohada de seda que cuestan tan solo $ 10

Los compradores de Amazon dicen que duermen 'como un bebé mimado' gracias a estas fundas de almohada de seda que cuestan tan solo $ 10

Miles de compradores de Amazon recomiendan la funda de almohada de seda Mulberry, y está a la venta en este momento. La funda de almohada de seda viene en varios colores y ayuda a mantener el cabello suave y la piel clara. Compre las fundas de almohada de seda mientras tienen hasta un 46 por ciento de descuento en Amazon

Se busca al corredor de los Bengals Joe Mixon por orden de arresto emitida por presuntamente apuntar con un arma de fuego a una mujer

Se busca al corredor de los Bengals Joe Mixon por orden de arresto emitida por presuntamente apuntar con un arma de fuego a una mujer

El jueves se presentó una denuncia de delito menor amenazante agravado contra Joe Mixon.

Profesor de la Universidad de Purdue arrestado por presuntamente traficar metanfetamina y proponer favores sexuales a mujeres

Profesor de la Universidad de Purdue arrestado por presuntamente traficar metanfetamina y proponer favores sexuales a mujeres

El Departamento de Policía de Lafayette comenzó a investigar a un profesor de la Universidad de Purdue en diciembre después de recibir varias denuncias de un "hombre sospechoso que se acercaba a una mujer".

Concept Drift: el mundo está cambiando demasiado rápido para la IA

Concept Drift: el mundo está cambiando demasiado rápido para la IA

Al igual que el mundo que nos rodea, el lenguaje siempre está cambiando. Mientras que en eras anteriores los cambios en el idioma ocurrían durante años o incluso décadas, ahora pueden ocurrir en cuestión de días o incluso horas.

India me está pateando el culo

India me está pateando el culo

Estoy de vuelta por primera vez en seis años. No puedo decirte cuánto tiempo he estado esperando esto.

ℝ

“And a river went out of Eden to water the garden, and from thence it was parted and became into four heads” Genesis 2:10. ? The heart is located in the middle of the thoracic cavity, pointing eastward.

¿Merrick Garland le ha fallado a Estados Unidos?

Es más de la mitad de la presidencia de Biden. ¿Qué está esperando Merrick Garland?

¿Merrick Garland le ha fallado a Estados Unidos?

Creo, un poco tarde en la vida, en dar oportunidades a la gente. Generosamente.

Language