Android – necesito algunas aclaraciones de fragmentos vs actividades y vistas

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

En los videos, Google sugiere que siempre que sea posible ( link1 , link2 ), debemos usar fragmentos en lugar de actividades, pero no explican exactamente por qué.

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

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 utilizar fragmentos en comparación con el uso de actividades / vistas / diseños?

Preguntas de la prima:

  1. ¿Puedes dar algunos usos realmente interesantes para los fragmentos? Cosas que Google no mencionó en sus videos?
  2. ¿Cuál es la mejor manera 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? ¿Alguna sugerencia y advertencia de su experiencia?

# 1 & # 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?

Fragmentos son la solución de Android para la creación de interfaces de usuario reutilizables. Puede lograr algunas de las mismas cosas utilizando actividades y diseños (por ejemplo, mediante el uso de includes). Sin embargo; Los fragmentos están conectados a la API de Android, desde HoneyComb, y hacia arriba. Permítanme elaborar;

  • El ActionBar . Si desea pestañas para navegar por su aplicación, verá rápidamente que la interfaz ActionBar.TabListener le da una FragmentTransaction como argumento de entrada al método onTabSelected . Probablemente podría ignorar esto, y hacer algo más e inteligente, pero estaría trabajando contra la API, no con ella.

  • El FragmentManager maneja «atrás» para usted de una manera muy inteligente. Volver no significa volver a la última actividad, como para las actividades regulares. Significa volver al estado del fragmento anterior.

  • Puede usar el cool ViewPager con un FragmentPagerAdapter para crear interfaces swipe. El código FragmentPagerAdapter es mucho más limpio que un adaptador normal y controla las instanciaciones de los fragmentos individuales.

  • Su vida será mucho más fácil si utiliza Fragmentos cuando intenta crear aplicaciones para teléfonos y tabletas. Dado que los fragmentos están tan vinculados con el Honeycomb + API, usted querrá utilizarlos en los teléfonos, así como reutilizar el código. Ahí es donde la biblioteca de compatibilidad es muy útil.

  • Incluso podría y debe utilizar fragmentos para aplicaciones destinadas sólo a teléfonos. Si tiene la portabilidad en mente. Utilizo ActionBarSherlock y las bibliotecas de compatibilidad para crear "ICS buscando" aplicaciones, que se ven iguales todo el camino de vuelta a la versión 1.6. Obtiene las últimas características como ActionBar , con pestañas, desbordamiento, barra de acción dividida, viewpager, etc.

Bonus 2

La mejor manera de comunicarse entre los fragmentos son intenciones. Al presionar algo en un fragmento que normalmente llamar a StartActivity() con datos en él. La intención se transmite a todos los fragmentos de la actividad que se inicia.

  1. Fragmento es una parte de una actividad, que aporta su propia IU a esa actividad. El fragmento puede ser pensado como una sub actividad. Donde como la pantalla completa con la que el usuario interactúa se llama como actividad. Una actividad puede contener fragmentos múltiples. Los fragmentos son en su mayoría una parte secundaria de una actividad.

  2. Una actividad puede contener 0 o múltiples números de fragmentos en función del tamaño de la pantalla. Un fragmento puede ser reutilizado en múltiples actividades, por lo que actúa como un componente reutilizable en las actividades.

  3. Un fragmento no puede existir independientemente. Debe ser siempre parte de una actividad. Cuando la actividad puede existir sin ningún fragmento en ella.

No estoy seguro de qué video (s) se está refiriendo, pero dudo que estén diciendo que usted debe utilizar fragmentos en lugar de actividades, porque no son directamente intercambiables. En realidad, hay una entrada bastante detallada en la Guía de Dev, considere leerlo para 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 aplicación de nivel superior. Las ventajas de los fragmentos incluyen la reutilización del código y la modularidad (por ejemplo, utilizando la misma vista de lista en muchas actividades), incluida la capacidad de crear interfaces de varios paneles (sobre todo útiles en tabletas). La principal desventaja es (alguna) complejidad añadida. Generalmente, puede lograr lo mismo con vistas (personalizadas) de una manera no estándar y menos robusta.

Un Fragmento es una parte de la interfaz de usuario o comportamiento de una aplicación que se puede colocar en una Actividad que permite un diseño de actividad más modular. No va a 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 propios callbacks del ciclo de vida.

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

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

  4. Un fragmento puede usarse en múltiples actividades.

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

  6. Cuando se detiene la actividad, 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. Fragmentos se agregaron a la API de Android en Android 3 (Honeycomb) con API versión 11.

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

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

Históricamente, cada pantalla de una aplicación para Android se implementó como una actividad independiente. Esto crea un reto 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 una referencia accesible a nivel mundial disponible.

Haciendo cada pantalla un fragmento separado, este dolor de cabeza que pasa de los datos es completamente evitado. Los fragmentos siempre existen dentro del contexto de una Actividad dada y siempre se puede acceder a esa Actividad. Almacenando la información de interés dentro de la Actividad, el Fragmento para cada pantalla puede simplemente acceder a la referencia del objeto a través de la Actividad.

Los fragmentos son de uso particular en algunos casos como donde queremos mantener un cajón de navegación en todas nuestras páginas. Puede inflar un diseño de trama con cualquier fragmento que desee y aún así tener acceso al cajón de navegación.

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

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

Sé que esto ya fue discutido a muerte, pero me gustaría añadir algunos puntos más:

  • Frags se puede utilizar para rellenar Menu s y puede manejar los clics de MenuItem por su cuenta. Por lo tanto, dando más opciones de modulación para sus actividades. Puedes hacer cosas de ContextualActionBar y así sucesivamente sin que tu actividad lo sepa y básicamente puedes desacoplarlas de las cosas básicas que manejas tu actividad (Navegación / Configuración / Acerca de).

  • Un Frag padre con Frags niño puede darle más opciones para modular sus componentes. Por ejemplo, puedes cambiar fácilmente Frags, poner nuevos Frags dentro de un Pager o eliminarlos, reordenarlos. Todo sin tu actividad sabiendo nada acerca de ello sólo se centra en las cosas de nivel superior.

Un fragmento vive dentro de una actividad.

Mientras que una actividad vive en sí misma.

Fragmentos vive dentro de la Actividad y tiene:

  • Su propio ciclo de vida
  • Su propio diseño
  • Sus propios fragmentos de niños y etc.

Piensa en Fragmentos como una sub actividad de la actividad principal a la que pertenece, no puede existir por sí misma y puede ser llamado / reutilizado una y otra vez. Espero que esto ayude 🙂

  • Cómo puedo hacer que mi cambio de tamaño de fuente TextView dinámicamente dependiendo del tamaño de vista de padres
  • ¿Cómo cambiar el fondo del widget usando RemoteViews?
  • XML predeterminado para la notificación de estado
  • ¿Cómo comprobar los indicadores de gravedad en una vista Android personalizada?
  • Integre la vista Unity3d en la actividad de Android
  • Cómo limitar la dimensión mínima capaz de cultivar una imagen en android
  • No puedo obtener mi ubicación y el botón de ubicación no mostrar
  • ¿Cómo dividir el texto en 2 textviews como si hubiera 1?
  • Personalizar la lista de sugerencias de AutoCompletar vista de texto
  • Animación de Android para girar una vista y congelarla después de la rotación
  • Uso de navigationView con tabLayout
  • FlipAndroid es un fan de Google para Android, Todo sobre Android Phones, Android Wear, Android Dev y Aplicaciones para Android Aplicaciones.